如何防止功能优化

veh*_*zzz 3 c c++ gcc

我正在优化整个代码,但我不希望某个函数被优化,比如用于调试目的.有没有办法在gcc 3.4+编译器上做到这一点?

nos*_*nos 12

最简单的方法,将函数放在自己的编译单元中,编译没有优化标志的那个.

最近的gcc版本(我认为4.4+)有一个属性来控制每个函数的优化,使用

__attribute__((optimize(0))) 
Run Code Online (Sandbox Code Playgroud)

关于禁用优化的功能

  • 你有一个例子吗?我知道微软对调试可执行文件使用不同的C运行时,但是跨模块函数调用和结构对齐互操作性得到保证.据我所知,gcc在所有制度下都会产生100%兼容的输出.显然,结构对齐和ABI之类的东西超出了语言标准的范围,因此编译器在生成调试输出时不会*遵守它们.但这让我觉得更像是一个迂腐而不是实际的观点. (2认同)