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

o4hqfura  于 2023-03-01  发布在  其他
关注(0)|答案(2)|浏览(479)

有没有什么代码可以让我自己编写,或者有没有其他方法可以检查我的编译器正在编译的是哪一个C语言版本?
我想知道是否有一种方法可以让我看到编译器的问题是C89,C99,C11,C18等,也许利用__STDC_VERSION__

nhjlsmyf

nhjlsmyf1#

您可以查看__STDC_VERSION__宏,它的格式为YYYYMM,并从中推断您运行的是C89、C99、C11还是C18。
另请参见What is the STDC_VERSION value for C11?

xdnvmnnf

xdnvmnnf2#

如何检查我的编译器使用的是哪个版本的C?
要检查标准版本,请使用__STDC____STDC_VERSION__。各种编译器还提供了特定于实现的宏,以便进一步细化。
__STDC__随C89版本及更高版本提供。
C94之前的兼容版本没有明确定义__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

相关问题