1. 程式人生 > >工具-Eclipse+symbol ‘vector ’could not be resolved/Symbol 'hash_map' could not be resolved

工具-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檔案。
2.使用終端,檢視C 庫檔案的路徑:

  在終端下輸入:  $ 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.使用的冒號是英文中的:而不是中文的冒號:。
7.選中下面的Append variables to native environment.

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函式,就需要重新啟動一次?——這種現象導致我很不看好這種解決方法。
3.設定結果。

==========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 中的配置。

嘗試上述方法後,越改越錯,最後發現,是自己的標頭檔案沒有引入正確!!