1. ホーム
  2. c++

MacターミナルでC++11に対応したC++をコンパイルする方法

2023-11-05 07:08:48

質問

Mac ターミナルで C++11 のソース コードをコンパイルしようとしましたが、失敗しました。私は g++ -std=c++11 , g++ -std=c++0x , g++ -std=gnu++11g++ -std=gnu++0x を実行しましたが、何も動作しませんでした。ターミナルでは常に unrecognized command line option . しかし g++ -std=gnu などは問題なく動作しました (もちろん C++11 のソース コードは通過できません)。

C++11のサポートをオンにするには、どのオプションを使用すればよいですか?

ちなみに、私が使用しているコマンドラインツールはXcode内にインストールされており、それらが最新であることは間違いないです。

どのように解決するのですか?

他の方が指摘されているように clang++ ではなく g++ . また、デフォルトの libstdc++ の代わりに libc++ ライブラリを使用する必要があります。同梱の libstdc++ はかなり古いバージョンのため、C++11 ライブラリの機能が含まれていません。

clang++ -std=c++11 -stdlib=libc++ -Weverything main.cpp

Xcodeのコマンドラインツールをインストールしていない場合は、インストールしなくてもコンパイラや他のツールを実行することができます。 xcrun ツールを使用します。

xcrun clang++ -std=c++11 -stdlib=libc++ -Weverything main.cpp

また、特定の警告を無効にしたい場合、コンパイラに追加のフラグを渡すことができます。警告メッセージの最後には、その警告を有効にするための最も具体的なフラグが表示されます。その警告を無効にするには、警告の前に no- を警告の名前に追加します。

例えば、c++98互換性警告はおそらく必要ないでしょう。これらの警告の最後にはフラグが表示されます。 -Wc++98-compat と表示され、これを無効にするには -Wno-c++98-compat .