【问题标题】:Eclipse shows annotated errors but builds successfullyEclipse 显示带注释的错误但构建成功
【发布时间】:2013-06-20 10:04:05
【问题描述】:

我在 Ubuntu 13.04 上使用 Eclipse Juno 为树莓派开发。我按照本指南配置了一个交叉编译工具链:http://hertaville.com/2012/09/28/development-environment-raspberry-pi-cross-compiler/

我的 hello world 程序可以在树莓派上编译并正确运行,但 Eclipse 将所有 STL 包含为错误。

我尝试过的:

  • 重建项目
  • 重建索引(索引->重建)

我猜我的配置中缺少一些路径,但我不确定是哪一个。我确实对 google 进行了大量研究,但找不到任何具体的解决方案。

所以问题是,如何配置 Eclipse 以查看我的构建命令使用的 C++ STL 包含路径? (arm-linux-gnueabihf-g++)

更新:

我正在查看我之前盲目复制粘贴的包含路径,并注意到其中一个应该指向 C++ STL,但在文件夹结构中不够深入。我通过将 .../include 更改为 .../include/c++/4.7.2 来修复它,并且修复了 eclipse 看不到 STL。

但是现在我有一个新问题:当我包含一个文件时,例如#include <string>,我不能使用字符串类型;它强调了string 的每个实例并说Type 'string' could not be resolved. 但是如果我重新启动Eclipse,错误就会消失...直到我对代码进行任何更改,这会使红线重新出现。而且,程序编译成功。

【问题讨论】:

    标签: eclipse compiler-construction raspberry-pi eclipse-cdt


    【解决方案1】:

    CDT 有时会非常反复无常。但是如果您的路径有误,程序将无法正常运行,因此您的编译器知道 STL。我在导入一些第三方库(源文件)时遇到了这种问题,并切换包含的顺序修复了它。在你的情况下,它可能会更复杂......

    如果你不能摆脱这个错误,你仍然可以禁用一些特定的错误并将其变成简单的警告,但这会有点容易出错和危险:

    Project > Properties > C/C++ General > Code Analysis > Use project settings > Switch the errors that are bugging you into warnings

    祝你好运。

    【讨论】:

    • 编译器知道 STL,是的。但是 Eclipse 不是编译器,它是一个 IDE,它有一个不同的系统来检测可用的包含文件。就我而言,编译器和 IDE 之间存在脱节。并且禁用错误并不是一个真正的选择,如果 IDE 看不到包含文件,那么我写的几乎每一行都带有红色下划线。
    • 是的,当然。我知道 IDE 和我每天使用的编译器之间的区别。这不是我的意思,我知道我的回答没有太大帮助。这里的重点是警告您 CDT 仍然存在一些错误,例如,我注意到 Windows 版本显示的问题比 linux 版本关于您所谈论的问题类型更多。而且,请相信我很抱歉不能在这里提供更多帮助。
    【解决方案2】:

    所以看来我的问题是通过简单地将 C++ STL 的包含路径更改为其他内容然后再返回来解决的。

    步骤:

    1. 找到 STL 的包含路径并将其从 .../include 更改为 .../include/c++/4.7.2
    2. 重新启动 eclipse,您可能会注意到它现在部分工作(我在问题中提到的仍然有一些奇怪的行为)
    3. .../include/c++/4.7.2改回.../include
    4. 重新启动 Eclipse,现在它应该可以工作了。

    【讨论】:

      猜你喜欢
      • 2013-03-14
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      • 2021-10-11
      • 2012-06-17
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      相关资源
      最近更新 更多