如何检查我的编译器正在使用哪个C版本?

时间:2019-11-25 21:45:08

标签: c

是否可以编写任何代码或以其他方式检查编译器正在编译的C语言版本?

2 个答案:

答案 0 :(得分:4)

您可以查看__STDC_VERSION__宏,该宏的格式为YYYYMM,由此可以推断出您是运行C89,C99,C11还是C18。

另请参阅What is the __STDC_VERSION__ value for C11?

答案 1 :(得分:3)

  

如何检查我的编译器正在使用哪个C版本?

要检查标准版本,请使用__STDC____STDC_VERSION__。各种编译器还提供了特定于实现的宏,以进一步完善。

__STDC__适用于1989年及以后的版本。

1994年之前的兼容版本不一定定义__STDC_VERSION__。从那时起,它就是一个long常量。

常见的值包括:

199409L
199901L
201112L
201710L

将它们放在一起

#if defined(__STDC__)
  #if defined(__STDC_VERSION__)
    printf("Version %ld\n", __STDC_VERSION__);
  #else
    puts("Standard C - certainly 1989");
  endif
#else
  puts("Pre 1989 or non-compliant C");
#endif

示例macro usage

相关问题