如何在gcc中获得当前的c方言?

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

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

 #include  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; } 

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

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

在严格C模式下( -std=cXX而不是-std=gnuXX ),符号__STRICT_ANSI__定义为1