C++11をデフォルトのコンパイラに設定するには?

C++11をデフォルトのコンパイラに設定するには?

私はUbuntuを使用しています。

C ++でプログラムするとき、nullptrコンパイラはこのキーワードを認識しません。

それは言うこの範囲では宣言されていません。

フラグを設定しても機能しません-std=c++11

答え1

C++11 はコンパイラではなく、広く使用されている多くのコンパイラで実装されている ISO 標準です。 UbuntuのデフォルトのC ++コンパイラはg++GNUコンパイラコレクションから来ています。あなたの質問で述べたように、この-std=c++11フラグはC ++ 11機能g++とClang(Ubuntuで利用可能な別のC ++コンパイラ)を有効にします。

コンパイラでC ++ 11サポートが有効またはサポートされていない場合は、表示されるエラーメッセージが表示されます。 GCC 4.6は初めてサポートされているバージョンなので、以前のバージョンを使用している場合はインストールされているバージョンはnullptr使用できませんnullptrg++ --version

少なくともGCC 4.6を使用していると仮定すると、ビルドシステムが正しいフラグをコンパイラに渡さない理由を確認する必要があります。たとえば、CMake では以下を使用します。

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

関連情報