是否可以编写任何代码或以其他方式检查编译器正在编译的C语言版本?
答案 0 :(得分:4)
您可以查看__STDC_VERSION__
宏,该宏的格式为YYYYMM,由此可以推断出您是运行C89,C99,C11还是C18。
答案 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