我知道编译器使用__STDC__
表示编译器是标准C,从那里,您可以使用__STDC_VERSION__
来确定标准的级别你正在使用。
我也知道C90没有价值,C90修正案1有199401L
而C99有199901L
。
最新的C1x草案我简单地将其命名为201ymmL
,我认为它在最终标准中的含义不那么“模糊”。
我的猜测是201112L
,因为那是C11批准的时候,但我想确定。
我以为我可以尝试使用gcc -std=c1x
,但我正在运行的gcc
版本尚不支持。
有谁知道实际价值是多少?
答案 0 :(得分:29)
-std=c11
gcc
201112L
__STDC_VERSION__
用于gcc
2011年12月20日在gcc
ml:
201ymmL
补丁
http://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg23572.html
请注意,显然ISO版C11忘记更新草稿中的201112l
。
预期的最终____STDC_VERSION____值201112L也已实施(编辑在发送文件以供ISO发布之前忘记更新201ymmL占位符)。
另请参阅DR #411,其正式值为__STDC_VERSION__
。编辑说"The committee is trying to get it approved as a TC as soon as possible."。 (TC =“技术勘误”)
编辑(2012年7月16日): 2012年7月15日发布的技术勘误1(ISO/IEC 9899:2011/Cor 1:2012)将201112L
修正为{{1}}。
答案 1 :(得分:2)
根据this发布到GCC邮件列表的帖子,最终值是,如您所怀疑的那样,201112L。