コンパイラーが__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/[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
に修正します。
this GCCメーリングリストへの投稿によると、ご想像のとおり、最終的な値は201112Lです。