GCCコンパイラがサポートする標準を見つけるにはどうすればよいですか?コンパイル時にどのC++標準が使用されているか(定義された定数のチェック)を確認する方法を意味しているわけではありませんが、コンパイルする前に、使用可能な標準をどのように確認できますか(フラグ-std=c++??
の場合)?
情報はman g++
にはありません。
オプションを手動で試す以外に、g++ --version
でgccバージョンを確認できますか?
GCCのバージョンとサポートされている標準のどこかの表を見つけることは可能ですか?
gccとg ++には、これをチェックするコマンドラインオプションがありません。 -vオプションがサポートされている標準について何かを伝えるのは素晴らしいことです。代わりに、 gcc Standards のオンラインドキュメントと cppreference.com の便利な概要を確認できます。
cppreferenceによると、c ++ 11の完全サポートはgcc 4.8.1に付属しています。
代わりに、c ++ 14(c ++ 17のいくつかの新機能を含む)を完全にサポートするには、gcc 5.0以降が必要です。
@oldMammuthが作成したコメントはほぼ正しいです。gcc
とg++
には、実際にサポートする言語標準を出力する方法があります。十分に文書化されていません。 --help
引数のヘルプテキストの下の括弧内にリストされていない場合は、基本的に非表示だったと思います。これを行う方法は、GNUコンパイラツールチェーンを実行し、使用している特定のコンパイラインスタンスに--help
テキストを要求することです。実際にこれを実行した後、これを学習しました私自身のプロジェクトの調査ですが、1つのプログラムの下にコンパイラーのバンドル全体をバンドルするために、gcc
とg++
はまさにそれを行います。彼らはメインの実行可能ファイルを使用して、コンパイラ、アセンブラ、およびリンカーのプロセス。ヘルプテキストにアクセスして、特定のコンパイラバージョンのサポートされている言語標準を取得するには、gcc
またはg++
ではなく、コンパイラに問い合わせる必要があります。
この時点で、両方のコマンドを入力するのに飽きてきたので、残りの部分では、gcc
を使用していると想定します。どちらのコマンドも実質的に交換可能であり、基本的に同じ名前の異なる仲介者であるという事実にもかかわらず。
gcc -print-prog-name=cc1
を使用すると、上記のコンパイラへのパスを取得できます。私のシステムでは、これは/usr/lib/gcc/x86_64-linux-gnu/8/cc1
です。次に、上記の実行可能ファイルを--help
パラメータを指定して呼び出すだけで、準備は完了です。 注意、何百ものヘルプパラメータエントリがあります。実際に出力をgrep
にパイプして使用することをお勧めしますそれらを見つけるための正規表現。そうでなければ、非常に多くの追加情報があり、本当に煩わしいからです。
代替:
gcc
ヘルプテキストに記載されているgcc -v --help
を使用して、特定のツールチェーン内の各プログラムのヘルプダイアログを印刷できます。 ただし、これにより多くの出力が得られます。
ここでも、正規表現を使用して出力を検索し、サポートされている標準バージョンを見つけることをお勧めします。
gcc
は、CやC++よりも多くの言語をサポートしています。これには、FortranやGoが含まれますが、これらに限定されません。