最近、私が書いたc ++コードのコンパイルエラーに直面したため、C++ 11コンパイラを使用しているかどうか尋ねられましたが、正直に言って、コンパイラのバージョンを確認する方法がわかりません!これを理解する方法はありますか?
ところで、コードブロックをIDEとして使用しています。これには、MinGWのGCCコンパイラとGDBデバッガが含まれています。また、Linuxでc ++コードをコンパイルしている場合、コンパイラのバージョンを知るためにどのコマンドを実行すればよいですか。 ?
それは難しい問題です。 C++ 11は、コンパイラのバージョンではなく、標準のバージョンを指します。異なるコンパイラ、および特定のコンパイラの異なるバージョンは、少なくとも最近のバージョンでは、通常、標準のバージョンの混合を実装します。多かれ少なかれ、C++ 11の実装はかなり新しくなり、おそらくかなりバグが多いからです。
ほとんどのコンパイラには、バージョンを出力するオプションがあります。多くは、詳細モードで体系的に出力します。 g ++の場合は、g++ --version
を試してください。最近のバージョンのg ++はC++ 11をいくらかサポートしていますが、-std=c++0x
(通常の-std=c++03
または-std=c++98
ではなく)でアクティブ化する必要があります。名前(c++0x
ではなくc++11
)が示すように、これはnotは本当にC++ 11です。これは、主要な新機能のいくつか(ほとんど?)の実装であり、さまざまなワーキングペーパーに基づく予備バージョンであり、最終的な標準ではありません。
(FWIW:コンパイラがC++ 11のすべてを完全に実装しているとは思いませんが、私は間違っていることが証明されたいです。)
次のようにコンパイラーのバージョンを確認できます。
g++ --version
C++ 11を使用しているかどうかはわかりません。 c ++ 11機能を使用するには、thr -std=c++0x
フラグを指定してコンパイラーを呼び出す必要があります。
g++ -std=c++0x ....
Gccはまだc ++ 11の100%を実装していないこと、およびgccが実装する量はバージョンによって異なることに注意してください。サポートされている機能の表については こちら を参照してください。
[〜#〜] 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 ...を選択し、g ++が次期C++ 0x ISO C++言語標準[-std = c ++ 0x]に従うようにします