use*_*722 4 c compiler-construction optimization
我听说带有/不带优化选项的C编译器可能会生成不同的程序(用优化编译程序会导致它表现不同),但我从未遇到过这样的情况.任何人都可以给出简单的例子来展示这个
对于gcc 4.4.4,这与-O0和不同-O2
void foo(int i) {
foo(i+1);
}
main() {
foo(0);
}
Run Code Online (Sandbox Code Playgroud)
通过优化,这将永远循环.没有优化,它崩溃(堆栈溢出!)
其他更现实的变体通常取决于时序,易受浮点精确度变化的影响,或取决于未定义的行为(未初始化的变量,堆/堆栈布局)