日食C项目显示错误(符号无法解析),但它编译
我可以访问一个工作中的C项目,我必须实现一些东西。我可以将它加载到eclipse中,并且可以使用Project -> Build All
。 编译显示没有错误或警告。 但在eclipse中,显示了很多错误。 一个例子:
有一个枚举
typedef enum MeasurementType {
PN, BB, AM, RES
} MEAS_TYPE;
MEAS_TYPE type;
在其中一个文件中。 它被用在其他地方并产生这样的错误:
最有趣的是,只有AM
似乎是一个问题,而不是PN
或BB
。
我还没有找到一个令人满意的解决方案。 我已经尝试在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