工具-Eclipse+symbol ‘vector ’could not be resolved/Symbol 'hash_map' could not be resolved
==========Eclipse使用vector報錯:symbol vector could not be resolved========
原因:
以後補充。
解決方法:
1.準備一個編寫好的test.c和test.cpp原始檔。
1.可以是空的test.c和test.cpp檔案。 |
在終端下輸入: $ gcc -v test.c
3.檢視輸出。重點關注以下內容:
·····················
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/5/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
End of search list.················
4.檢視C++ 庫檔案的搜尋路徑:
在終端下輸入:$ g++ -v test.cpp
5.檢視輸出,重點關注以下內容:
···················
#include "..." search starts here:
#include <...> search starts here:
/usr/include/c++/5
/usr/include/x86_64-linux-gnu/c++/5
/usr/include/c++/5/backward
/usr/lib/gcc/x86_64-linux-gnu/5/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
··············
6.在eclipse中選單Window --> Preferences --> C/C++ --> Build --> Environment新增環境變數
C_INCLUDE_PATH =/usr/lib/gcc/x86_64-linux-gnu/5/include: /usr/local/include: /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed: /usr/include/x86_64-linux-gnu: /usr/include
CPLUS_INCLUDE_PATH=/usr/include/c++/5:/usr/include/x86_64-linux-gnu/c++/5:/usr/include/c++/5/backward:/usr/lib/gcc/x86_64-linux-gnu/5/include:/usr/local/include:/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed:/usr/include/x86_64-linux-gnu:/usr/include
1.使用的冒號是英文中的:而不是中文的冒號:。 |
8.重啟Eclipse 新建專案即可。
如果出現重新新建專案時,出現了題目中的問題或是在輸入程式碼時出現紅色波浪線提示,可以先build一下,然後這些錯誤提示就會消失。 為什麼會有上述現象出現???——不知道,原因有待考察! |
補充另一個解決方法,可以解決問題,但是需要多次重啟Eclipse,因此我很嫌棄這種做法。
解決辦法:
1.project——properties——C/C++ General——Perprocessor include Paths,Macros etc.——Providers——check:CDT GCC Built-in Compiler Settings Cygwin[shared]——check:use global provider shared between projects ——Apply。
2.重啟Eclipse。並且projet——index——Rebuild。
重新加入一個STL函式,就需要重新啟動一次?——這種現象導致我很不看好這種解決方法。 |
==========Eclipse使用vector報錯:Symbol 'hash_map' could not be resolved========
1、解決什麼問題?
2、解決的方法:
(1)需要正確引用標頭檔案:
(2)形式如下:
=>在Linux下g++的形式:
標頭檔案:: #include <ext/hash_map>
名稱空間:: using namespace __gnu_cxx;
使用方法::
使用方法上和map沒有什麼大的區別,
#include <ext/hash_map>
using namespace __gnu_cxx;
hash_map<key_type,value_type> obj;
hash_map<key_type,value_type>::iterator iter = obj.begin();
=>在Windows下VC++的形式:
和map的使用方法一樣,沒有名稱空間,直接#include <hash_map>就可以使用了,就像直接#include <map>一樣。
3、其他補充地方?
網路上有一堆的方法:
1."Properties" C/C++ General -> Pathsand Symbols -> Symbols -> GNU C++,新增__GXX_EXPERIMENTAL_CXX0X__
2.std::hash_map
3.修改C++ build或者c++ general 中的配置。
嘗試上述方法後,越改越錯,最後發現,是自己的標頭檔案沒有引入正確!!