是否有预处理器宏来检测跨平台的C99?

时间:2013-10-30 05:20:33

标签: c macros c99

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

我希望它可以在XCode,GCC和Visual Studio版本中移植。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:4)

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

  

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

     

__STDC_VERSION__整数常量201ymmL

在脚注中:

  

此宏未在ISO / IEC 9899:1990中指定,并被指定为199409L in   ISO / IEC 9899 / AMD1:1995和ISO / IEC 9899:1999中的199901L。意图就是这样   保持类型long int的整数常量,随着本国际标准的每次修订而增加。

相关问题