2

C11の場合、テストできることを知ってい#if(__STDC_VERSION >= 20112L)ます。しかし、-std=c1x

どのマクロや値をテストする必要がありますか?

この規格の命名法は何ですか?または、もしあれば、非公式の名前かもしれません。これが明確であることを願っています。前もって感謝します。

4

1 に答える 1

6

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

于 2012-08-04T04:13:53.730 に答える