3.9 C++(www.cppentry.com)兼容性
C++(www.cppentry.com)使用C89预处理器,因此C和C++(www.cppentry.com)在这方面的差别极微。
预定义宏
C++(www.cppentry.com)编译器预定义了__cplusplus宏,可以在源文件中使用,并且在C和C++(www.cppentry.com)环境中都适用。这个预定义宏并不遵循标准C的拼写约定,而是与原有的C++(www.cppentry.com)编译器兼容。在标准C++(www.cppentry.com)中,它的值是个版本号,例如199711L。
至于C++(www.cppentry.com)环境(在C++(www.cppentry.com)的当前定义中)是否定义了__STDC__,则是由编译器定义的。标准C和标准C++(www.cppentry.com)之间存在足够的差别,因此并不清楚是否应该定义__STDC__。
表3-2所列出的只有C99才有的宏在C++(www.cppentry.com)中均不存在。
例子
为了与传统C、标准C和C++(www.cppentry.com)兼容,应该按照下面这种方式对环境进行测试:
如果读者知道自己所使用的C编译器遵循标准C,则可以采用简化的方式:
参考:__STDC__ 第3.3.4节;__STDC__VERSION__ 第3.3.4节。