Dyl*_*ens 35 c++ eclipse c++11
在互联网上研究这个之后,我一直无法让Eclipse索引器解决GCC 4.4.4附带的C++ 0x附加内容中的"shared_ptr".我确保用Eclipse的正确包含创建我的项目,所以它肯定在查看4.4.4包含文件夹.
程序编译并运行得很好.要访问shared_ptr我正在使用"#include <memory>".
知道是什么打破了索引器吗?
Dav*_*e S 50
您需要将预处理器符号' __GXX_EXPERIMENTAL_CXX0X__ '设置为eclipse项目.当你使用'-std = c ++ 0x'时,g ++会自动添加,但eclipse不知道这一点,因此它将相关标题的那些部分视为已禁用.
我在Windows下使用Eclipse 4.5.1(Mars.1)和Cygwin 2.3.0(GCC 4.9.3)遇到了这个问题.
由于<memory>标头中的这样的行,索引器找不到shared_ptr.__cplusplus宏正在评估除C++ 11(又名201103)之外的其他内容,因此包含较旧的auto_ptr.h而不是shared_ptr.h.为什么?以下项目属性的屏幕截图显示在CDT GCC内置编译器设置下检测到C++ 98(199711).
#if __cplusplus >= 201103L
# include <bits/shared_ptr.h>
#else
# include <backward/auto_ptr.h>
#endif
Run Code Online (Sandbox Code Playgroud)
告诉Eclipse使用C++有两种可能的解决方案:
在同一预处理器包含路径屏幕上,滚动到"设置条目"区域的顶部.展开CDT用户设置条目.为__cplusplus = 201103L添加新的预处理器宏.为发布和调试配置执行此操作.然后重建索引.
如果要将CDT GCC内置编译器设置默认为对所有项目使用201103,则编辑language.settings.xml文件(在Windows下,这是c:\ Users\deanhill\workspace\.metadata\.plugins\org .eclipse.cdt.core\language.settings.xml).设置__cplusplus = 201103L.重新启动Eclipse并重建索引.