C编译器优化局部静态变量是否合法?

对于像这样的功能

int test(void) {
  static int x = 0;
  x++;
  return 0;
}

是一个C编译器允许优化x?

作为参考,GCC 6.3.0或Clang 3.9都没有优化使用-O3递增x.

最佳答案 鉴于它没有可观察到的副作用(从C标准的角度来看),编译器将完全优化掉这个函数.

至于为什么你的编译器没有这样做,我无法解释! (当然,他们没有义务这样做.)

点赞