C11的__STDC_VERSION__值是多少?

时间:2012-02-15 13:21:50

标签: c macros iso c11

我知道编译器使用__STDC__表示编译器是标准C,从那里,您可以使用__STDC_VERSION__来确定标准的级别你正在使用。

我也知道C90没有价值,C90修正案1有199401L而C99有199901L

最新的C1x草案我简单地将其命名为201ymmL,我认为它在最终标准中的含义不那么“模糊”。

我的猜测是201112L,因为那是C11批准的时候,但我想确定。

我以为我可以尝试使用gcc -std=c1x,但我正在运行的gcc版本尚不支持。

有谁知道实际价值是多少?

2 个答案:

答案 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。