33

コンパイラは、コンパイラが標準 C であることを示すために使用することを知ってい__STDC__ます。そこから、使用している標準のレベル__STDC_VERSION__を把握するために使用できます。

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

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

私の推測では201112L、C11 が批准されたのはそれ以降になると思いますが、確実にしたいと思います。

試してみようと思ったのですgcc -std=c1xが、実行しているのバージョンでgccはまだサポートされていません。

実際の価値を知っている人はいますか?

4

2 に答える 2

31

-std=c11gcc201112L使用されます__STDC_VERSION__

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

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

201ymmLまた、どうやら C11 の ISO バージョンがドラフトからの更新を忘れていることに注意してください。

意図した最終__STDC_VERSION__201112Lも実装されています (編集者は201ymmL、ISO による公開のためにドキュメントを送信する前に、プレースホルダーを更新するのを忘れていました)。

DR #411も参照してください。これにより、意図した値が であることが公式になります201112l。編集者は、「委員会はできるだけ早く TC として承認を得ようとしている」と述べています。. (TC = 「技術正誤表」)

編集 (2012 年 7 月 16 日): 2012 年 7 月 15 日にリリースされたTechnical Corrigendum 1 ( ISO/IEC 9899:2011/Cor 1:2012 ) は、 を に修正__STDC_VERSION__201112Lます。

于 2012-02-15T13:29:52.477 に答える
2

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

于 2012-02-15T13:33:32.100 に答える