gpt4 book ai didi

使用 GCC -O2 选项编译生成不同的程序

转载 作者:太空狗 更新时间:2023-10-29 15:14:25 25 4
gpt4 key购买 nike

我听说 C 编译器有/没有优化选项可能会生成不同的程序(编译有优化的程序会导致它的行为不同),但我从未遇到过这种情况。任何人都可以举一个简单的例子来说明这一点?

最佳答案

对于 gcc 4.4.4,这与 -O0-O2 不同

void foo(int i) {
foo(i+1);
}

main() {
foo(0);
}

通过优化,这个循环永远存在。没有优化,它会崩溃(堆栈溢出!)

其他更现实的变体通常取决于时序,容易受到浮点精度变化的影响,或者取决于未定义的行为(未初始化的变量、堆/堆栈布局)

关于使用 GCC -O2 选项编译生成不同的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5422882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com