Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
341 views
in Technique[技术] by (71.8m points)

c - What is the __STDC_VERSION__ value for C11?

I know that compilers use __STDC__ to indicate that a compiler is standard C and, from, there, you can use __STDC_VERSION__ to figure out which level of the standard you're using.

I also know that C90 had no value, C90 amendment 1 had 199401L and C99 had 199901L.

The latest C1x draft I have simply states it as 201ymmL and I'm assuming it was made a less "vague" value in the final standard.

My guess is that it will be 201112L since that's when C11 was ratified but I'd like to be certain.

I thought I could try using gcc -std=c1x but the version of gcc I'm running doesn't support that yet.

Does anyone know what the actual value is?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

With -std=c11 in gcc, 201112L is used for __STDC_VERSION__

See this gcc patch on December 20, 2011 on gcc ml:

https://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg23572.html

And note that apparently the ISO version of C11 forgot to update the 201ymmL from the Draft.

The intended final __STDC_VERSION__ value, 201112L, is also implemented (the editor forgot to update the 201ymmL placeholders before sending the document for publication by ISO).

See also DR #411, which makes it official that the intended value is 201112l. The editor has said that "The committee is trying to get it approved as a TC as soon as possible.". (TC = "Technical Corrigendum")

EDIT (July 16, 2012): Technical Corrigendum 1 (ISO/IEC 9899:2011/Cor 1:2012) released on July 15, 2012 fixes the __STDC_VERSION__ to 201112L.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...