我知道对于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/

10-12 13:43