我可以在工作中访问一个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
中包含我能想到的所有可能的目录(如this post建议的那样),但这没有帮助。
项目本身是用Makefile编译的(这就是我需要Project -> Build All
)的原因。是不是eclipse没有正确地解释那些Makefile呢?在弄乱了几个小时并且没有前进一步后,我有点迷失了。
答案 0 :(得分:1)
看起来Eclipse(不是gcc)设置为解析错误的或一些附加的,可能过时的(包含)源文件。
答案 1 :(得分:1)
由于我收到了moooeeeep的建议,我将在此处发布解决方案。我仍然接受了alk的回答,因为他是那个向我展示正确方向的人。
我的解决方案:
如果我点击eclipse中的AM
(用红色加下划线的那个)并按F3
转到声明,它实际上问我要去哪个声明。它列出了(正确的)枚举常量以及来自其他地方的一些变量。因此问题是AM
的多个声明存在于不同的代码位置。
我通过重命名将enum
常量修改为其他内容(在我的情况下为AN
)来解决此问题。代码中没有相同名称的变量,因此eclipse能够正确地重构它。
答案 2 :(得分:1)
Eclipse CDT Bugzilla中添加了一个关于此问题的错误报告:https://bugs.eclipse.org/bugs/show_bug.cgi?id=439553
答案 3 :(得分:1)
这是一个相当古老的问题,但我希望这个简短的回答对某人有用。
我在IDE中遇到类似的错误,但在编译时却没有,这似乎表明Eclipse的Codan中有一个错误。升级到6月发布的新版Eclipse(Neon 4.6)后,错误消失了。只是尝试更新Eclipse!