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。