C11の場合、テストできることを知ってい#if(__STDC_VERSION >= 20112L)
ます。しかし、-std=c1x
どのマクロや値をテストする必要がありますか?
この規格の命名法は何ですか?または、もしあれば、非公式の名前かもしれません。これが明確であることを願っています。前もって感謝します。
gcc の-std=c1x
オプションは と同義であり、同じ値に-std=c11
設定されます(注:ではありません)。__STDC_VERSION__
201112L
20112L
リリースされる前、新しい C 標準は "C1X" と呼ばれていました (正確な時期が不明だったため)、gccは次の標準の部分的な-std=c1x
サポートを有効にするオプションを追加しました。標準が C11 としてリリースされたとき、 (まだ部分的な) サポートを有効にするために gcc が追加されましたが、互換性のためのオプションは保持されています。-std=c11
-std=c1x
(編集エラーのため、リリースされた 2011 ISO C 標準は の値を指定していませんが、編集者はそれが正しい__STDC_VERSION__
と述べています。この質問を参照してください。)201112L
Jens Gustedt のコメントは良い点です。gcc -std=c11
に設定__STDC_VERSION__
され201112LL
、これは C11 準拠を意味するはずですが、実際には C11 機能のログがまだありません。これは、将来のリリースで改善されることが期待できます。
同様に、 に-std=c99
設定__STDC_VERSION__
しますが、C99 標準には完全には準拠していません (現在のステータスは、ここに文書化さ199901L
れています。gcc の C90 準拠 (またはを使用) は、C90 標準に完全に準拠しています。-ansi
-std=c90