C方言是否影响gcc中的优化?

C方言是否影响gcc中的优化?,c,gcc,optimization,dialect,C,Gcc,Optimization,Dialect,C方言是否影响gcc中的优化? 也就是说(所有优化选项保持不变)gcc将为ANSI与C99与…生成更快/更慢/更大/更小的代码 C89(“ANSI C”)和C99之间的一个区别是C99中添加的restrict关键字,该关键字专门用于改进优化。虽然您的代码可能没有显式地使用它(因为您编写了C89代码),但在C99模式下,C语言头(如)可能会使用restrict声明函数原型。这可能会也可能不会产生影响。只有当您查看生成的代码时,您才会知道。我能想到至少一种可能的情况:@ShafikYaghmour,

C方言是否影响gcc中的优化? 也就是说(所有优化选项保持不变)gcc将为ANSI与C99与…生成更快/更慢/更大/更小的代码


C89(“ANSI C”)和C99之间的一个区别是C99中添加的
restrict
关键字,该关键字专门用于改进优化。虽然您的代码可能没有显式地使用它(因为您编写了C89代码),但在C99模式下,C语言头(如)可能会使用
restrict
声明函数原型。这可能会也可能不会产生影响。只有当您查看生成的代码时,您才会知道。

我能想到至少一种可能的情况:@ShafikYaghmour,但这并不意味着GCC将实际消除它们,即使允许……@EugeneSh。我确实说过,事实并非如此could@Shafik好啊但我在寻找更真实的东西,它可能会影响我的代码。@ShafikYaghmour:“……控制表达式不是一个常量表达式……”
1
是一个常量表达式。我真想知道编译器是否会删除这样的循环。但是,如果没有外部使用这些副作用,它可能会优化掉循环中的任何表达式。这将是正常的优化。