web-dev-qa-db-ja.com

C11の__STDC_VERSION__値は何ですか?

コンパイラーが__STDC__を使用して、コンパイラーが標準Cであることを示していることを知っています。そこから、__STDC_VERSION__を使用して、標準のどのレベルであるかを判断できます。を使用します。

また、C90には価値がなく、C90修正1には199401Lがあり、C99には199901Lがあったことも知っています。

私が持っている最新のC1xドラフトは単に201ymmLと述べており、最終的な標準では「あいまい」な値が少なくなっていると思います。

C11が批准されたので、201112Lになると思いますが、確実にしたいと思います。

gcc -std=c1xを使ってみることができると思いましたが、実行しているgccのバージョンはまだそれをサポートしていません。

誰かが実際の値が何であるか知っていますか?

32
paxdiablo

gcc-std=c11がある場合、201112L__STDC_VERSION__に使用されます

2011年12月20日のgccmlのこのgccパッチを参照してください。

http://www.mail-archive.com/[email protected]/msg23572.html

また、C11のISOバージョンがドラフトから201ymmLを更新するのを忘れていたようです。

意図された最終的な____STDC_VERSION____値201112Lも実装されています(エディターは、ISOによる公開のためにドキュメントを送信する前に、201ymmLプレースホルダーを更新するのを忘れていました)。

DR#411 も参照してください。これにより、意図した値が201112lであることが公式になります。編集者は次のように述べています 「委員会はできるだけ早くTCとして承認されるように努めています。」 。 (TC = "Technical Corrigendum")

編集(2012年7月16日):技術正誤表1( ISO/IEC 9899:2011/Cor 1:2012 )リリース2012年7月15日に、__STDC_VERSION__201112Lに修正します。

30
ouah

this GCCメーリングリストへの投稿によると、ご想像のとおり、最終的な値は201112Lです。

2
Dan Moulding