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

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

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

根据维基百科关于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 

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

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

__STDC_VERSION__整数常量201ymmL

在脚注中:

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