編集:これは本当にEclipse Keplerに固有のものではないことがわかりました。 Eclipse Junoでも同じプロセスを使用する必要がありました。問題は、この同じ質問に答える他の投稿に欠落しているステップがあるように見えることでした。
Eclipse Kepler for C++を使用していますが、C++ 11を使用しようとしてエラーが発生しています。コンパイルするとエラーが発生します
エラー:範囲ベースのforループはC++ 98モードでは許可されません
私は投稿からの指示に従った
また、Eclipse Junoに提供されているソリューションは機能していません。
さまざまなコメントから、Eclipseの再起動とクリーニングと再構築が提案されています。違いはありません。
2つのことを行う必要があります。最初にコンパイラをセットアップする必要があり、次にCDTの言語プロセッサをセットアップする必要があります。使用しているコンパイラについては言及しなかったため、GCCであると想定しますが、手順は他のコンパイラでも同様です。 (もちろん、C++ 11をサポートするコンパイラが必要なことに注意してください。)
コンパイラのセットアップは非常に簡単です。
この時点で、プロジェクトを再構築して実行できるようになります。ただし、CDTはC++ 11インクルードのエラーを表示する場合があります。これを解決する方法は次のとおりです。
Eclipse Kepler Service Release 1でのC++ 11サポート(ビルドID:20130919-0819)
最新リリースのEclipse Kepler SR1では、追加する必要があるのは-std = c ++ 11
"コンパイラの仕様を取得するコマンド:"-行は次のようになります。
${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
CDT 8.3( Keplerアップデートとして利用可能 )では、ビルド設定に新しい方言オプションがあります:
私はEclipse Keplerを使用して修正しました:
1-プロジェクト>>所有者>> C/C++ビルド::設定を右クリック
2-GCC G ++コンパイラにアクセス>>その他>>その他のフラグ
i then added -std=c++11
hit apply and ok
これで問題が解決しました!
お役に立てば幸いです!
Eclipse Indigoとcdt 8.0.2の実行はこちら。私はすべてのガイドに従いましたが、std :: unique_ptrのようなものを見つけるには、手作業でプリプロセッサ定義を設定する必要がありました。インクルードファイル「メモリ」はこれをチェックします。プロジェクトプロパティの[C++ General]の[Paths and Symbols]の下にある[Symbols]タブで、__ cplusplusを201103Lに設定します。
方言フラグ "-std = c ++ 11"をプロジェクトプロパティに追加-> C/C++ビルド->設定->ツール設定(GCC C++コンパイラ->方言)は、上記の設定とは別に、Eclipse Keplerの問題を解決しました。
Eclipse Lunaを使用していますが、C/C++ Build-> Settingsの下に「Tool Settings」がありません。 I DID提案どおり、「C/C++ General-> Preprocessor Includes-> Providers」の下のコンパイラ仕様コマンドラインに-std = c ++ 11を追加します。しかし、それでもインデクサーのemplace()を解決する能力を満たしていませんでした。
そのため、ヘッダーファイルを調べて、emplace関数が__cplusplus> = 201103Lに依存していることがわかりました。そこで、プリプロセッサシンボル「__cplusplus」を追加し、値201103を指定しました。
ちょっとハックしますが、インデクサーは幸せです。 (そして、メイクファイルは、Eclipseプロジェクトではなく、ビルドフラグを定義します)
MrEricSirが提供するソリューションは、最新のEclipse Oxygen CDTをインストールした後にのみ機能します。 Mars CDTを使用する場合は機能しません。