Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Eclipse索引器可以';t解析共享\u ptr_C++_Eclipse_C++11 - Fatal编程技术网

C++ Eclipse索引器可以';t解析共享\u ptr

C++ Eclipse索引器可以';t解析共享\u ptr,c++,eclipse,c++11,C++,Eclipse,C++11,在互联网上对此进行了研究之后,我无法让Eclipse索引器从GCC4.4.4附带的C++0x添加中解析“shared_ptr”。我确保为Eclipse创建具有适当include的项目,因此它肯定在4.4.4 include文件夹中 程序编译和运行都很好。要访问共享ptr,我使用“#包含” 知道是什么破坏了索引器吗?您需要将预处理器符号“\uuuuugxx\ucx0x\uuuxx”设置到eclipse项目中。当您使用'-std=c++0x'时,g++会自动添加该值,但eclipse没有意识到这一点

在互联网上对此进行了研究之后,我无法让Eclipse索引器从GCC4.4.4附带的C++0x添加中解析“shared_ptr”。我确保为Eclipse创建具有适当include的项目,因此它肯定在4.4.4 include文件夹中

程序编译和运行都很好。要访问共享ptr,我使用“#包含”


知道是什么破坏了索引器吗?

您需要将预处理器符号“\uuuuugxx\ucx0x\uuuxx”设置到eclipse项目中。当您使用'-std=c++0x'时,g++会自动添加该值,但eclipse没有意识到这一点,因此它会将相关头的那些部分视为已禁用。

我也遇到了同样的问题。我在工作区的编译器选项中添加了GXX\u EXPERIMENTAL\u CXX0X以及
-std=c++11
。然而,这并没有解决我的问题

我又错过了一步: 右键单击项目->属性->C/C++构建->设置->交叉G++编译器->杂项->其他标志 我变了
-c-fmessage length=0
-c-fmessage length=0-std=c++11


现在Eclipse可以看到std::shared_ptr并对其进行正确的索引。

我在使用Eclipse 4.5.1(Mars.1)和Cygwin 2.3.0(GCC 4.9.3)的Windows下遇到了这个问题

索引器找不到共享的\u ptr,因为标题中有这样的行。Y-CPLUS加宏正在评估除C++ 11以外的其他东西(AKA 201103),所以旧的AutoPPTR h被包含而不是SyddypTr.h。为什么?项目属性的屏幕下截图显示,CDT GCC内置编译器设置下检测到C++ 98(199711)。
#if __cplusplus >= 201103L
#  include <bits/shared_ptr.h>
#else
#  include <backward/auto_ptr.h>
#endif
#如果uu cplusplus>=201103L
#包括
#否则
#包括
#恩迪夫

有两种可能的解决方案来告诉Eclipse使用C++:

  • 在同一预处理器包含路径屏幕上,滚动至设置条目区域的顶部。展开CDT用户设置项。为uu cplusplus=201103L添加新的预处理器宏。对发行版和调试配置都执行此操作。然后重建索引

  • 如果您希望将CDT GCC内置编译器设置默认为对所有项目使用201103,则编辑language.Settings.xml文件(在Windows下为c:\Users\deanhill\workspace\.metadata\.plugins\org.eclipse.CDT.core\language.Settings.xml)。设置uu cplusplus=201103L。重新启动Eclipse并重建索引


虽然我比赛迟到了,但这对我来说很有效:

右键单击项目->属性->C/C++常规->预处理器包含路径、宏等-->单击“提供程序”选项卡-->CDT GCC内置编译器设置

取消选中“使用项目间共享的全局提供程序”

添加-std=c++0x

然后它会像这样:

${COMMAND} ${FLAGS} -E -P -v -dD -std=c++0x "${INPUTS}"
重建索引


使用Debian Jessie+Eclipse Kepler构建id:20140224-0627对我来说,它通过在下面设置
其他方言标志=-std=c++11
来工作:

偏好> C++ +构建>设置> GCC C++编译器>方言,< /P> 以及在下面添加

-std=c++11

首选项> C++ +通用>预处理器包括路径>提供者- > CDT GCC内置编译器设置>命令获取编译器规范。


不要忘记清理和重建项目/索引。

@AnschelSchaffer Cohen:Project Properties-C/C++General-Path and Symbols-Symbols-GNU C++您可以通过向C/C++内置项目属性的发现选项中的“编译器调用参数”添加-std=C++0x来自动添加它。@DaveS-Hi,很抱歉用一个老问题来打扰您,但是添加符号
\uuuuugxx\ucx0x\uuuuxx
对我不起作用,还有其他建议吗?提前通知;)@MaTeO,你是怎么做到的?我在C++中添加了-STD= C++ 11标志,在编译器设置中内置了C++-Buffer->设置>发现-> CDT GCC,并添加了@戴夫斯所描述的GXXX实验AdvxCX0X符号。然后为了增加一些“魔力”,关闭eclipse并重新打开它。这似乎解决了Eclipse中的问题,看看我的答案吧,我也更改了构建设置,但Eclipse无法索引std::shared\u ptrI在
/usr/include/c++/4.8.2
中找到了我的std::shared\ptrI,奇怪的是我在Eclipse中使用了很长时间的c++11特性,有一天突然出现了这个问题。在回来之前,我在IDE之间跳了好几次,最后找到了这个答案。在Neon.2(4.6.2)上为我工作。