10

C++ 有一个__cplusplus预处理器定义,可让您检测版本。C有什么类似的吗?

最好我希望它可以跨 XCode、GCC 和 Visual Studio 版本移植。

4

2 回答 2

11

根据C99上的维基百科文章

A standard macro __STDC_VERSION__ is defined with value 199901L to indicate that C99 support is available

#if __STDC_VERSION__ >= 199901L
   /*C99*/
#else
  /*Not C99*/
#endif
于 2013-10-30T05:24:48.613 回答
4

您可以测试宏的值(注意开头和结尾有两个下划线),对于C99兼容平台__STDC_VERSION__,它应该大于或等于。199901L

C11(ISO/IEC 9899:201x) §6.10.8.1强制宏

__STDC_VERSION__整数常量201ymmL

在脚注中:

此宏未在 ISO/IEC 9899:1990 中指定,而是199409L在 ISO/IEC 9899/AMD1:1995 和199901LISO/IEC 9899:1999 中指定。目的是这将保持一个整数常量,long int随着本国际标准的每次修订而增加。

于 2013-10-30T05:25:20.743 回答