2013-02-26 59 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可以解析這種模式。 (我不知道我頭上有一個,但我也沒有花很多時間看)。