85

編集: これは実際には Eclipse Kepler に固有のものではないことがわかりました。Eclipse Juno でも同じプロセスを使用する必要がありました。問題は、この同じ質問に答える他の投稿に手順が欠けているように見えることでした.

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

エラー: 範囲ベースの for ループは C++98 モードでは許可されていません

投稿の指示に従いました

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

Eclipse Juno 用に提供されたソリューションが機能していません。

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

4

8 に答える 8

182

最初にコンパイラをセットアップする必要があり、次に CDT の言語プロセッサをセットアップする必要があります。使用しているコンパイラについて言及していないため、GCC であると想定しますが、手順は他のコンパイラでも同様です。(もちろん、C++11 をサポートするコンパイラが必要であることに注意してください。)

コンパイラの設定はかなり簡単です:

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

この時点で、プロジェクトを再構築して実行できるはずです。ただし、CDT は C++11 インクルードのエラーを表示する場合があります。これを解決する方法は次のとおりです。

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

Eclipse Kepler Service Release 1 での C++11 サポート (ビルド ID: 20130919-0819)

最新リリースの Eclipse Kepler SR1では、 -std=c++11を追加するだけです

  1. プロジェクトを右クリックし、[プロパティ] をクリックします。
  2. C/C++ GeneralおよびPreprocessor Include Paths, Macros などに移動します。
  3. [プロバイダー] タブを選択します
  4. コマンドに-std=c++11を追加して、コンパイラの仕様を取得します。
  5. 変更を適用すると、インデックスが自動的に生成されます。

コンパイラ仕様を取得するコマンド:」行は次のようになります。

${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
于 2013-11-20T16:27:30.733 に答える
13

CDT 8.3 ( Kepler アップデートとして利用可能) の時点で、ビルド設定に新しい方言オプションがあります。

http://wiki.eclipse.org/CDT/User/NewIn83#Build

于 2014-03-18T13:05:29.653 に答える
6

私はEclipse Keplerを使用しており、それを修正するためにこれを行いました:

1 - プロジェクトを右クリック >> プロパティ >> C/C++ ビルド :: 設定

2 - GCC G++ コンパイラに移動 >> その他 >> その他のフラグ

 i then added -std=c++11 
 hit apply and ok

それは私の問題を解決しました!

お役に立てば幸いです!

于 2013-12-27T00:14:24.173 に答える
2

Project properties-> C/C++ Build -> Settings -> Tool settings (GCC C++ Compiler -> Dialect) に方言フラグ "-std=c++11" を追加すると、上記の設定とは別に、Eclipse Kepler での問題が解決しました。

于 2016-05-02T23:31:49.213 に答える
0

MrEricSir が提供するソリューションは、最新の Eclipse Oxygen CDT をインストールした後にのみ機能します。Mars CDT ではうまくいきません。

于 2017-11-06T23:17:40.903 に答える