我知道对于C11,我可以测试#if(__STDC_VERSION >= 20112L)
。但是对于-std=c1x
我应该测试什么宏和/或值?
该标准的术语是什么?或非正式名称(如果有)。
我希望这很清楚。提前致谢。
最佳答案
gcc的-std=c1x
选项与-std=c11
是同义词,它将__STDC_VERSION__
设置为相同的值201112L
(注意:不是20112L
)。
在其发布之前,新的C标准被称为“ C1X”(因为尚不知道何时发布),gcc添加了-std=c1x
选项以为即将推出的标准提供部分支持。当标准发布为C11时,gcc添加了-std=c11
以启用(仍是部分支持),但保留了-std=c1x
选项以实现兼容性。
(由于编辑错误,已发布的2011 ISO C标准未指定__STDC_VERSION__
的值,但编辑器已声明201112L
是正确的;请参见this question。)
延斯·古斯特的评论很有意义。 gcc -std=c11
将__STDC_VERSION__
设置为201112LL
,这应该暗示C11符合性,但实际上它仍然缺少C11功能的日志。我们可以预期,将来的发行版会对此有所改善。
同样,-std=c99
将__STDC_VERSION__
设置为199901L
,但是它并不完全符合C99标准(当前状态已记录为here。gcc的C90符合性(带有-ansi
或-std=c90
)非常符合完全符合C90标准。
关于c - 如何使用__STDC_VERSION__来检查-std = c1x是否正在使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11805636/