Eclipse C项目显示错误(符号无法解析),但编译通过

8
我在工作中获得了一个C项目,需要实现一些功能。我能够将其加载到eclipse中,并可以使用“Project-> Build All”进行构建。编译没有显示任何错误或警告。但是在eclipse中,显示了许多错误。例如:

有一个枚举

typedef enum MeasurementType {
    PN, BB, AM, RES
} MEAS_TYPE;
MEAS_TYPE type;

在文件中有一处代码。它在其他地方被使用,并产生了以下错误: enter image description here 有趣的是,只有 AM 有问题,而不是 PNBB
我还没有找到一个令人满意的解决方案。我已经尝试在项目属性-> C/C++常规->路径和符号中包含我能想到的所有可能的目录(就像这篇文章建议的那样),但是没有帮助。
该项目本身使用Makefiles进行编译(这就是为什么我需要项目->全部构建)。可能是Eclipse无法正确解释这些Makefiles之类的东西吗?在玩弄这些东西几个小时后,我有点迷茫,一步也没有走出去。
编辑:这里是我的项目属性的一些与构建相关的屏幕截图(至少我认为它们是相关的:D)。如果您需要更多信息,请告诉我。

2
你可能想让Eclipse重新构建它的索引。 - alk
2
这是什么类型的Eclipse项目?你提供了makefile吗?看起来Eclipse(而不是gcc)设置解析错误或一些附加的,可能过时的包含文件。 - alk
@alk 我添加了一些截图。Makefile 在项目的根目录中。这是一个普通的 C/C++ 项目(或者你对那个问题有其他意思?)。 - brimborium
@alk 嗯,你是指在“项目属性-> C / C ++常规->路径和符号->包含”中吗? - brimborium
1
很可能是的,至少如果MeasurementType来自您的源代码。或者它是否由任何库声明,在/usr/include或任何其他系统包含路径下安装了其头文件? - alk
显示剩余2条评论
4个回答

2
这是一个比较老的问题,但我希望这个简短的答案可以对某些人有用。在IDE中我遇到了和枚举相关的错误,但在编译时没有出现这种情况,这表明Eclipse的Codan存在漏洞。在升级到六月份发布的新版本Eclipse(Neon 4.6)后,这些错误已经消失了。只需要尝试更新一下Eclipse即可!

1
谢谢你的回答。我最终为该项目切换到了另一个IDE。但我会再次尝试使用Eclipse Neon。我更喜欢使用Eclipse。 :) - brimborium

2

由于我从moooeeeep得到了建议,所以我会在这里发布解决方案。我仍然接受alk的答案,因为他是向我指出正确方向的人。

我的解决方案:

如果我在eclipse中点击AM(下划线为红色)并按F3跳转到声明,它实际上会询问我要去哪个声明。它列出了(正确的)枚举常量以及其他地方的一些变量。因此,问题在于不同代码位置存在多个AM的声明。

我通过将enum常量重命名为其他名称(例如AN)来解决这个问题。代码中没有同名的变量,因此eclipse能够正确地进行重构。


也帮助了我。我没有注意到我重新定义了枚举值! - Erdem Tuna
在我的情况下,只有一个声明,按F3键就可以直接跳转到它。然而,索引器仍然显示未解析,这很奇怪。 - lurker

1

谢谢,知道这个消息很好。希望能够修复,因为这真的很烦人。;) - brimborium
已经过去8年了,这个bug仍然很顽强。 :) - lurker

1

看起来 Eclipse(而不是 gcc)设置为解析错误的或一些附加的、可能过时的(include)源文件。


我在上一个评论中说明了这个答案是如何解决我的问题的。再次感谢。 :) - brimborium
@moooeeeep 考虑过这个,但我想奖励 alk 的快速和有帮助的帮助。 - brimborium

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接