C11的__STDC_VERSION__值是多少?
我知道编译器使用__STDC__
来表示编译器是标准C,并且从那里,您可以使用__STDC_VERSION__
来确定您正在使用的标准级别 。
我也知道C90没有价值,C90修正案1有199401L
而C99有199901L
。
最新的C1x草案我简单地说它是201ymmL
,我假设它在最终标准中的价值不那么“模糊”。
我的猜测是,自从C11被批准以来,它将是201112L
,但我想确定一下。
我以为我可以尝试使用gcc -std=c1x
但我正在运行的gcc
版本还不支持。
有谁知道实际价值是多少?
在gcc
使用-std=c11
201112L
用于__STDC_VERSION__
请参阅2011年12月20日关于gcc
ml的gcc
补丁:
http://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg23572.html
请注意,显然ISO版本的C11忘记从草稿更新201ymmL
。
还实现了预期的最终____STDC_VERSION____值(201112L)(编辑在发送文档以供ISO发布之前忘记更新201ymmL占位符)。
另请参阅DR#411 ,其正式使其预期值为201112l
。 编辑说: “该委员会正试图尽快将其作为TC批准。” 。 (TC =“技术勘误”)
编辑(2012年7月16日): 2012年7月15日发布的技术勘误1( ISO / IEC 9899:2011 / Cor 1:2012 )将__STDC_VERSION__
修复为201112L
。
根据这篇post到GCC邮件列表,最终的价值是,如您所怀疑的,201112L。