对于像这样的功能
int test(void) {
static int x = 0;
x++;
return 0;
}
是一个C编译器允许优化x?
作为参考,GCC 6.3.0或Clang 3.9都没有优化使用-O3递增x.
最佳答案 鉴于它没有可观察到的副作用(从C标准的角度来看),编译器将完全优化掉这个函数.
至于为什么你的编译器没有这样做,我无法解释! (当然,他们没有义务这样做.)
对于像这样的功能
int test(void) {
static int x = 0;
x++;
return 0;
}
是一个C编译器允许优化x?
作为参考,GCC 6.3.0或Clang 3.9都没有优化使用-O3递增x.
最佳答案 鉴于它没有可观察到的副作用(从C标准的角度来看),编译器将完全优化掉这个函数.
至于为什么你的编译器没有这样做,我无法解释! (当然,他们没有义务这样做.)