最近、私が書いた C++ コードでコンパイル エラーに直面したので、C++11 コンパイラを使用しているかどうか尋ねられましたが、正直なところ、コンパイラのバージョンを確認する方法がわかりません。これを理解する方法はありますか??
ところで、MinGW の GCC コンパイラと GDB デバッガを含む IDE としてコードブロックを使用しています。また、Linux で C++ コードをコンパイルしている場合、コンパイラのバージョンを知るにはどのコマンドを実行すればよいですか?
最近、私が書いた C++ コードでコンパイル エラーに直面したので、C++11 コンパイラを使用しているかどうか尋ねられましたが、正直なところ、コンパイラのバージョンを確認する方法がわかりません。これを理解する方法はありますか??
ところで、MinGW の GCC コンパイラと GDB デバッガを含む IDE としてコードブロックを使用しています。また、Linux で C++ コードをコンパイルしている場合、コンパイラのバージョンを知るにはどのコマンドを実行すればよいですか?
それはトリッキーな質問かもしれません。C++11 は、コンパイラのバージョンではなく、標準のバージョンを指します。異なるコンパイラ、および特定のコンパイラの異なるバージョンは、通常、少なくとも最近のバージョンでは、標準のバージョンの混合を実装します。多かれ少なかれ、C++11 の実装はかなり新しく、おそらくかなりバグがあるからです。
ほとんどのコンパイラには、バージョンを出力するオプションがあります。多くの場合、詳細モードで体系的に出力されます。g++ の場合は、 を試してくださいg++ --version
。g++ の最近のバージョンには C++11 のサポートがいくつかありますが、 (通常のまたは
-std=c++0x
ではなく) でアクティブ化する必要があります。名前 (ではなく) が示すように、真の C++11ではありません。これは主要な新機能のいくつか (ほとんど?) の実装であり、さまざまなワーキング ペーパーに基づく暫定バージョンであり、最終的な標準ではありません。-std=c++03
-std=c++98
c++0x
c++11
(FWIW: C++11 のすべてを完全に実装しているコンパイラはないと思いますが、間違っていることを証明したいと思います。)
コンパイラのバージョンは次のように確認できます。
g++ --version
C++11 を使用しているかどうかはわかりません。C++11 の機能を使用するには、thr-std=c++0x
フラグを指定してコンパイラを呼び出す必要があります。
g++ -std=c++0x ....
gcc はまだ c++11 を 100% 実装しておらず、どれだけ実装しているかはバージョンによって異なることに注意してください。サポートされている機能の表については、こちらを参照してください。
EDIT : 厳密に言えば、GCC を使用している場合、機能が不足しているため、完全に準拠した C++11 コンパイラを使用することはできません。しかし、バージョン 4.6.1 以降では、標準の大部分がカバーされています。
Linux を使用している場合、バージョンの確認は簡単です。
> gcc --version
あなたが持っているバージョンを教えてくれます。GCC C++11 のサポートはまだ不完全であることに注意してください。詳細については、http: //gcc.gnu.org/projects/cxx0x.htmlを参照してください。
私自身、いくつかの C++11 機能、つまり初期化子リストとnullptr
定数を使用しました。GCC 4.6 を使用していますが、問題なく動作しています。
編集:はい、@jaunchopanzaが言っ-std=c++0x
たように、それを機能させるにはコンパイラフラグが必要です。Code::Blocks を使用している場合は、プロジェクトを右クリックしてBuild options...を選択し、Have g++ follow thecoming C++0x ISO C++ language standard [-std=c+ +0x]