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

时间:2014-04-08 22:00:54

标签: c gcc dialect

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

2 个答案:

答案 0 :(得分:4)

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

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

当处于严格C模式(-std=cXX而不是-std=gnuXX)时,符号__STRICT_ANSI__被定义为1

答案 1 :(得分: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;
}