2013-02-26 90 views
3

我最近开始潜入开源项目的代码中,该项目主要用C++编写。我在Ubuntu 12.10中使用Eclipse 3.8。Eclipse无法解析用宏声明的字段

该问题: 蚀被不正确地标记,因为用于独立的字段声明了头文件的特别精细的公约的领域没有得到解决。

someclass.h

class SomeClass 
{ 
public: 
    #define MACRO_CLASS_PARAM(Name) SomeType m_##Name; 
    #include "fields.h" 
    #undef MACRO_CLASS_PARAM 
}; 

fields.h

MACRO_CLASS_PARAM(Field1) 
MACRO_CLASS_PARAM(Field2) 
... 

现在cpp文件,如果我想要做这样的事情instanceOfSomeClass.Field1 Eclipse将其标记为一个错误“Field'Field1'无法解析”。

问题:有什么办法让Eclipse正确处理这种情况吗?

+0

试试这个http://stackoverflow.com/questions/8148235/eclipse- cdt-shows-semantic-errors-but-compilation-is-ok – Gilad 2013-02-26 21:09:41

+0

我不认为这是同样的问题。我对我的问题的猜测是分析器没有扩展包含的文件和宏,所以它没有看到字段声明,因此并不认为它们存在。我确实玩过关于该主题的一些建议,但没有成功 – 2013-02-26 22:11:00

回答

2

无法正确处理不在全局范围内的#include语句在Eclipse的索引器中为long-standing deficiency

事情可以做这件事:

  • 修改代码来避免这种模式。一旦文本头包含模型被C++模块取代,它将无效。
  • 为Eclipse CDT提供此缺陷的修复。
  • 使用不同的IDE可以解析这种模式。 (我不知道我头上有一个,但我也没有花很多时间看)。