我知道对于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是正确的;请参阅此问题.)
Jens Gustedt的评论很有说服力.gcc -std=c11设置__STDC_VERSION__为201112LL,这应该暗示C11一致性,但实际上它仍然缺少C11功能的日志.我们可以预期在未来的版本中会有所改进.
同样,-std=c99设置__STDC_VERSION__为199901L,但它不完全符合C99标准(此处记录了当前状态.gcc的C90一致性(带-ansi或-std=c90)与C90标准完全一致.
| 归档时间: |
|
| 查看次数: |
2046 次 |
| 最近记录: |