【发布时间】:2017-03-29 21:51:45
【问题描述】:
对于像这样的功能
int test(void) {
static int x = 0;
x++;
return 0;
}
是否允许 C 编译器优化 x?
作为参考,GCC 6.3.0 或 Clang 3.9 都没有优化使用 -O3 递增 x。
【问题讨论】:
-
喜欢.. 为什么不呢?
-
即使启用了优化?
-
那么,可观察的行为发生了什么变化?
-
C 标准没有什么可说的,例如符号表,因为它们是实现细节。但是,x 的作用域只是那个函数。
-
@yellowantphil - 编译器可以假设未定义的行为永远不会发生。众所周知,gcc 会根据该假设进行优化。
标签: c static local compiler-optimization