2

C编程新手。
在 gcc-std中设置编译的 C 标准,例如gcc -std=c99.
有可能知道当前设置了哪个 C 标准?

4

2 回答 2

4

在各种模式下定义了各种预处理器符号。您可以使用gcc -E -dM -x c /dev/null来获取所有预定义的预处理器符号的转储。

在 C99 模式 (-std=c99-std=gnu99) 下,符号__STDC_VERSION__定义为199901L。在 C11 模式下(使用-std=c11or std=gnu11),它是201112L

在严格的 C 模式下(-std=cXX相对于-std=gnuXX),符号__STRICT_ANSI__被定义为1

于 2014-04-08T22:12:53.997 回答
2

您可以使用此程序打印默认值:

#include <stdio.h>

int main() {
#ifdef __STRICT_ANSI__
    printf("c");
#else
    printf("gnu");
#endif

#ifdef __STDC_VERSION__
  #if __STDC_VERSION__ == 199901L
    puts("99");
  #elif __STDC_VERSION__ == 201112L
    puts("11");
  #else
    puts("(unknown)");
  #endif
#else
  puts("90");
#endif
  return 0;
}
于 2014-04-09T22:59:54.803 回答