Eclipse CDTでgcc-4.7を使用するようにC++ 11プロジェクトを構成しました。私のシステムでは、C++ 11をサポートしていないデフォルトのコンパイラではありません。コンパイルが機能するためには、フラグ-std=c++11
を渡し、次のヘッダーパスを含める必要があります:/usr/local/Cellar/gcc/4.7.2/gcc/include/c++/4.7.2
std::unordered_set
やstd::unordered_map
などのC++ 11コンテナタイプを使用すると、CDTインデクサーはSymbol unordered_set could not be resolved
のエラーを出します。これらのシンボルを正しく解決するようにインデクサーに指示するにはどうすればよいですか?
これが、インデクサーの構成方法です。
設定を理解している限り、インデクサーは現在アクティブなビルド構成のコンパイラー設定を使用することになっています。コンパイルは正常に動作しますが、なぜインデックスも作成されないのですか?
このフォーラムの投稿で説明されているように:
http://www.Eclipse.org/forums/index.php/mv/msg/282618/
__GXX_EXPERIMENTAL_CXX0X__
を「名前」に入力し、「値」を空白のままにします。 [適用]をクリックし、要求された操作をすべて実行し、[OK]をクリックします。セットアップ**__GXX_EXPERIMENTAL_CXX0X__**
は私の場合は役に立ちません(2014年7月、Eclipse Kepler 20130919、Ubuntu 12.04)。
C++ 11構文の強調表示を修正するには、以下にアクセスしてください。
プロジェクトプロパティ-> C/C++全般->パスとシンボル->シンボル-> GNU C++
シンボルを上書きします(つまり、新しいシンボルを追加します):
__cplusplus
価値あり
201103L
PDATED:新しいバージョンのEclispe(2016年時点)を使用しても同じ問題が発生する場合は、値を試してください(jose.diegoが指摘):
201402L
プロジェクト設定でインデクサーが有効になっていることを確認します(C/C++一般->インデクサー)
次に、インデックスを再作成します(プロジェクト-> C/C++インデックス->再構築)
それでも問題が解決しない場合は、再度インデックスを作成してください。これで動作するはずです。
ラッキーグーグルで最近この問題を解決しました。
プロジェクトをクリックして右クリックし、[プロパティ]
選択 "C/C++全般->プロセッサインクルードパス、マクロなど..."
選択「プロバイダー」タブ
選択解除すべて除く「CDTユーザー設定エントリ」および「CDT GCC組み込みコンパイラー設定」
クリック「CDT GCC組み込みコンパイラー設定」
選択解除「プロジェクト間で共有されるグローバルプロバイダーを使用する」
編集「コンパイラの仕様を取得するコマンド」というラベルの付いた下部のボックス
Insertをコマンド-std = c ++ 11に追加すると、次のようになります。
${COMMAND} -std=c++11 -E -P -v -dD "${INPUTS}"
クリック適用してOK。
それは私のために働いた。おそらくプロジェクトのインデックスを再作成する必要があります。
またはに移動します。
C/C++ Build-> Discovery Options-> GCC C++ Compiler
コンパイラー呼び出し引数にフラグを追加します。 -std = c ++ 11 -m32など
発見されたエントリを今すぐ消去:[消去]をクリックします
プロジェクトを再構築する
その後、すべてのシンボルが正しい値で更新され、インデクサーは意図したとおりに動作するはずです
外部ビルダーを使用するプロジェクトでの回避策は、シンボルを定義することでした:
__cplusplus
値を持つ:
201403
プロジェクトの:パスとシンボル->シンボル/ GNU C++。
これはEclipse Kepler CDTバージョン8.3.0.201402142303で機能しました。
このガイド を参照してください:
以下はEclipse
C/C++
Oxygen
。2 with gcc-5.5.0
で動作します
Eclipse Properties->C/C++ Build->Settings->GCC C++ Compiler->Dialect->Other dialect flags: -std=c++17
Language standard
ドロップダウンリストで何も選択しないでください。
次の構成は、元の質問で示された問題を修正するのに役立ちます。
環境:Eclipse(Oxygen.3aリリース(4.7.3a))、Cygwin64。 Cygwinの異なるバージョンを使用している場合、次のように同様のディレクトリを見つけることができます。
手順1:次の2つのディレクトリがあることを確認します。
C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include
C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include\c++
上記の2つのディレクトリが表示されない場合は、Cygwinセットアッププログラムを起動して、gcc-core、gcc-g ++、およびlibgcc1をインストールしてください。
ステップ2:ディレクトリをコピーしますC:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include
からC:\cygwin64\usr
上記の2つのインクルードディレクトリが表示されない場合。
ステップ3:プロジェクトプロパティ-> C/C++全般->パスとシンボルに移動します。次の2つのパスがリストされていることを確認してください。
C:\cygwin64\usr\include
C:\cygwin64\usr\include\c++
ステップ4:プロパティ-> C/C++ビルド/設定/ Cygwin PEパーサーの選択
ステップ5:プロパティ-> C/C++ビルド/ツールチェーンエディターCygwin GCCを選択
ステップ6:Property-> C/C++ General/Indexer Enable indexerを選択します
ステップ7:Project-> C/C++ Index-> Rebuild
これで、EclipseがC++ 11型を表示できるようになります。