工具-Eclipse+symbol ‘vector ’could not be resolved/Symbol 'hash_map' could not be resolved
==========Eclipse使用vector报错:symbol vector could not be resolved========
原因:
以后补充。
我的猜想是路径设置不对。但是自己没有办法去验证这个猜想。 可以仔细研究该问题:https://stackoverflow.com/questions/10803685/eclipse-cdt-symbol-cout-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 中的配置。
尝试上述方法后,越改越错,最后发现,是自己的头文件没有引入正确!!