1. ホーム
  2. eclipse

[解決済み] Eclipse Juno/Kepler/Luna CDTでC++11を有効にするには?

2023-05-08 07:10:10

質問

EDIT: これは本当にEclipse Keplerに限ったことではないことがわかりました。私は Eclipse Juno で同じプロセスを使用しなければなりませんでした。問題は、この同じ質問に答える他の投稿に欠けている手順があるように思われることでした。

C++ 用の Eclipse Kepler を使用していますが、C++11 を使用しようとして、エラーが発生します。コンパイルすると、次のようなエラーが発生します。

error: range-based-for loop are not allowed in C++98 mode

投稿の指示に従いましたが

Eclipse CDT C++11/C++0x サポート

で、Eclipse Juno のために与えられた解決策はうまくいきません。

さまざまなコメントで、eclipse を再起動し、クリーニングして再構築することが提案されています。それは違いを生んでいません。

どのように解決したらよいでしょうか。

まず、コンパイラをセットアップし、次にCDTの言語プロセッサをセットアップする必要があります。 あなたが使用しているコンパイラーを言及しなかったので、私はそれが GCC であると仮定しますが、手順は他のコンパイラーに類似しています。 (もちろん、C++11をサポートするコンパイラが必要であることに注意してください)。

コンパイラーのセットアップはかなり簡単です。

  1. プロジェクトを右クリックして、[プロパティ] をクリックします。
  2. C/C++ ビルド] の下の [設定] をクリックします。
  3. GCC C++ コンパイラの下で、[その他] をクリックします。
  4. Other Flags] ボックスで、トークンのリストに "-std=c++11" を追加します。
  5. 適用と OK をクリックします。

この時点で、プロジェクトを再構築し、実行できるようになるはずです。 しかし、CDT はまだ C++11 インクルードに対してエラーを表示することがあります。 ここでは、それを解決する方法を説明します。

  1. プロジェクトを右クリックし、[プロパティ] をクリックします。
  2. C/C++ General] で ["プリプロセッサ インクルード パス、マクロ "] をクリックします。
  3. プロバイダー] タブを選択します。
  4. リストの中に "GCC Built in Compiler Settings" のような項目があるはずです。この項目を選択します。
  5. グローバル プロバイダーを使用する..." オプションのチェックをはずします。
  6. リストの下に "コンパイラの仕様を取得するコマンド." というボックスがあるので、これに "-std=c++0x" を追加します。
  7. 右側の 'Move Up' ボタンを使用して、リストの一番上にある "GCC Built in Compiler Settings" プロバイダを移動します。
  8. Apply をクリックし、次に OK をクリックします。
  9. Eclipse ワークスペースに戻り、[プロジェクト] メニューの [C/C++ インデックス] を選択し、"未解決のインクルードを再解決する をクリックします。