2008-09-12 57 views
2

我使用Eclipse作爲C++項目的IDE,我非常喜歡它告訴我給定符號在哪裏定義以及函數的參數是什麼。如何調整Eclipse的C++索引器?

但是,有一個問題:我也使用Lazy C++,這是一個採用單個源文件並生成.h和.cpp文件的工具。這些.lzz文件看起來像標題,但是這個工具支持一些非常溫和的語法好處,比如將嵌套名稱空間合併爲一個限定名稱。此外,它還有一些特殊的標籤,可以告訴工具具體放在哪裏(在標題或源文件中)。

所以我的典型SourceFile.lzz看起來是這樣的:

$hdr 
#include <iosfwd> 
#include "ProjectA/BaseClass.h" 
$end 

$src 
#include <iostream> 
#include "ProjectB/OtherClass.h" 
$end 

// Forward declarations 
namespace BigScope::ProjectB 
{ 
    class OtherClass; 
} 

namespace BigScope::ProjectA 
{ 
    class MyClass : public ProjectA::BaseClass 
    { 
    void SomeMethod(const ProjectB::OtherClass& Foo) { } 
    } 
} 

正如你看到的,它仍然是可識別的C++,但有一些附加功能。

由於某些原因,CDT的索引器似乎不想索引任何內容,我不知道錯在哪裏。在索引器視圖中,它向我展示了一棵空樹,但告訴我它有大約15000個符號和更多東西,其中沒有一個可以訪問。

因此,這裏是我的問題:我怎樣才能使索引輸出什麼它做一些更多的信息,爲什麼它時,它這樣做失敗了,我可以調整它比只用GUI可訪問的選項嗎?

感謝,

卡爾

回答

2

我想像它的一個:

  • Eclipse不希望在樹中顯示非C++資源(我有問題與此)

  • 您沒有「首選項> C/C++>索引器>索引所有文件」啓用。

  • 您要使用的 「完整的C/C++索引」,而不是 「快速C/C++索引」

+0

謝謝!第一點可能是一個問題。我已經完成了另外兩個。 – 2008-09-15 12:55:35

1

的CDT解析器/索引不會承認這樣的不可思議的擴展。你唯一能做的就是在Paths和Symbols屬性頁面上定義宏來欺騙解析器。嘗試創建具有空體的$hdr,$end$src的宏。這樣預處理器將刪除它們,解析器不會窒息它們。