标签: c static local compiler-optimization
对于像
int test(void) { static int x = 0; x++; return 0; }
是否允许C编译器优化x?
x
作为参考,GCC 6.3.0或Clang 3.9都没有优化使用-O3递增x。
答案 0 :(得分:2)
编译器有权完全优化此函数,因为它没有可观察到的副作用(从C标准的角度来看)。
至于为什么你的编译器没有这样做,我无法解释! (当然,他们没有义务这样做。)