6

我正在使用带有 CDT 的 Eclipse Juno 来使用自定义 makefile 开发我的 C++ 项目。我还在使用 C++11 功能,我必须按照此处关于 SO 的建议使用 Eclipse 的解析器。

问题是 Eclipse 无法解析在 STL 容器元素上访问的方法或字段。例如:

主应用程序.h

typedef struct _PlayerCalibrationData {
    [...]
    std::string getSamplesStr()
    {
            [...]
    }
} PlayerCalibrationData;

std::vector<MainApp::PlayerCalibrationData> m_calibrationData;

主应用程序.cpp

m_calibrationData[0].getSamplesStr();

getSamplesStr()将带有下划线并标记为错误,并显示消息“无法解析方法'getSamplesStr'”。

但是,无论我是从 Eclipse 还是从命令行调用它,编译器都不会抱怨。

此外,当我键入时m_calibrationData.,所有向量方法都会通过内容辅助弹出(即,这不是 Eclipse 找不到向量包含的问题),但是一旦我通过[]or访问元素at(),内容辅助就会安静,并且手动键入的任何内容都会被标记作为一个错误。

这不起作用是正常的吗?如果是,有没有办法可以专门关闭基于模板的容器的辅助/校正?

编辑

我现在还尝试禁用 c++11 支持,如果我这样做了,问题就消失了——但是当然 c++11 类型和语法无法识别。

编辑 2

我导入了第二个项目,输入了完全相同的设置,并且对于这个项目,解析工作正常。唯一的区别是项目布局(makefile 的不同位置)。但即使我删除并重新导入第一个项目,它仍然不起作用。

4

1 回答 1

5

这对我有用:

“您的项目名称”->右键单击->属性:

C/C++ 常规 -> 预处理器包含路径、宏等 -> 切换到名为“Providers”的选项卡:

  • 对于“配置”选择“发布”(然后选择“调试”)

  • 关闭所有提供程序,只需选择“CDT GCC 内置编译器设置”

  • 取消选中“在项目之间共享设置条目(全局提供者)”

  • 在“获取编译器规格的命令:”中添加不带引号的“-std=c++11”(也可以使用引号)

  • 点击应用并关闭选项

  • 重建索引

这适用于我在家里和工作中的两个 mashine,win7 x64,最新的官方 eclipse, 来自 sourceforge 上的 mingwbuilds 项目的cdt mingw-w64 gcc 4.7.2

于 2013-03-07T15:57:33.280 回答