【发布时间】:2011-11-29 14:55:20
【问题描述】:
在互联网上对此进行研究后,我无法让 Eclipse 索引器从 GCC 4.4.4 附带的 C++0x 添加中解析“shared_ptr”。我确保使用 Eclipse 的正确包含创建我的项目,所以它肯定在 4.4.4 包含文件夹中查找。
程序编译并运行良好。要访问 shared_ptr,我正在使用“#include
知道是什么破坏了索引器吗?
【问题讨论】:
在互联网上对此进行研究后,我无法让 Eclipse 索引器从 GCC 4.4.4 附带的 C++0x 添加中解析“shared_ptr”。我确保使用 Eclipse 的正确包含创建我的项目,所以它肯定在 4.4.4 包含文件夹中查找。
程序编译并运行良好。要访问 shared_ptr,我正在使用“#include
知道是什么破坏了索引器吗?
【问题讨论】:
您需要将预处理器符号“__GXX_EXPERIMENTAL_CXX0X__”设置为 Eclipse 项目。 g++ 会在您使用 '-std=c++0x' 时自动添加,但 eclipse 不知道这一点,因此它将相关标头的这些部分视为禁用。
【讨论】:
__GXX_EXPERIMENTAL_CXX0X__ 对我不起作用,还有其他建议吗?提前 ;)
我在使用 Eclipse 4.5.1 (Mars.1) 和 Cygwin 2.3.0 (GCC 4.9.3) 的 Windows 下遇到了这个问题。
索引器找不到 shared_ptr,因为
#if __cplusplus >= 201103L
# include <bits/shared_ptr.h>
#else
# include <backward/auto_ptr.h>
#endif
告诉 Eclipse 使用 C++ 有两种可能的解决方案:
在同一个预处理器包含路径屏幕上,滚动到设置条目区域的顶部。展开 CDT 用户设置条目。为 __cplusplus=201103L 添加一个新的预处理器宏。对发布和调试配置执行此操作。然后重建索引。
如果您想默认 CDT GCC 内置编译器设置为所有项目使用 201103,然后编辑 language.settings.xml 文件(在 Windows 下为 c:\Users\deanhill\workspace\。元数据\.plugins\org.eclipse.cdt.core\language.settings.xml)。设置 __cplusplus=201103L。重启 Eclipse 并重建索引。
【讨论】:
/usr/include/c++/4.8.2找到了我的
虽然我迟到了,但这对我有用:
右键Project->Properties->C/C++ General->Preprocessor Include Paths, Macros等 --> 点击“Providers”标签 --> CDT GCC Built-in Compiler Settings
取消选中“使用项目之间共享的全局提供程序”
添加-std=c++0x
然后它看起来像这样:
${COMMAND} ${FLAGS} -E -P -v -dD -std=c++0x "${INPUTS}"
重建索引。
使用 Debian Jessie + Eclipse Kepler 构建 ID:20140224-0627
【讨论】:
我遇到了同样的问题。我已将 GXX_EXPERIMENTAL_CXX0X 以及 -std=c++11 添加到工作区的编译器选项中。但是它并没有解决我的问题。
我又错过了一步:
右键单击 Project->Properties->C/C++ Build->Settings->Cross G++ Compiler->Miscellaneous->Other flags
我变了
-c -fmessage-length=0
到
-c -fmessage-length=0 -std=c++11
现在 Eclipse 可以看到 std::shared_ptr 并正确索引它。
【讨论】:
对我来说,它通过在下面设置 other dialect flags = -std=c++11 起作用:
首选项 -> C++ 构建 -> 设置 -> GCC C++ 编译器 -> 方言,
以及在下面添加-std=c++11:
Preferences -> C++ General -> Preprocessor Include Path -> Providers -> CDT GCC Build-in Compiler Settings -> 获取编译器规范的命令。
不要忘记清理和重建您的项目/索引。
【讨论】: