日食C项目显示错误(符号无法解析),但它编译

我可以访问一个工作中的C项目,我必须实现一些东西。我可以将它加载到eclipse中,并且可以使用Project -> Build All 。 编译显示没有错误或警告。 但在eclipse中,显示了很多错误。 一个例子:


有一个枚举

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

在其中一个文件中。 它被用在其他地方并产生这样的错误:

最有趣的是,只有AM似乎是一个问题,而不是PNBB


我还没有找到一个令人满意的解决方案。 我已经尝试在Project Properties -> C/C++ General -> Paths and Symbols包含所有可能的目录(就像这篇文章所建议的那样),但这并没有帮助。

项目本身是用Makefiles编译的(这就是为什么我需要Project -> Build All )。 eclipse是否可以正确解释这些Makefiles? 我花了几个小时搞乱了这些东西,并且没有向前迈进一步,我有点失落。

编辑:下面是我的构建相关的项目属性的一些截图(至少我相信他们是相关的:D)。 告诉我你是否需要更多信息。

在这里输入图像描述


它看起来好像Eclipse(而不是gcc)被设置为解析错误的或者一些额外的,可过时的(包含)源文件。


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

我的解决方案

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

我通过 enum常量重命名为别的东西(我的情况是AN )来解决这个问题。 代码中没有相同名称的变量,因此eclipse能够正确地重构它。


在Eclipse CDT Bugzilla中添加了一个关于这个问题的bug报告:https://bugs.eclipse.org/bugs/show_bug.cgi?id=439553

链接地址: http://www.djcxy.com/p/65721.html

上一篇: eclipse C project shows errors (Symbol could not be resolved) but it compiles

下一篇: Access other attributes of the instance with