我正在使用Eclipse作为C ++项目的IDE,我很乐意告诉我给定符号的定义以及函数的参数是什么。
然而,有一个问题:我还使用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个符号和更多东西,我似乎无法访问它们。
所以这是我的问题:如何让Indexer输出更多关于它正在做什么以及为什么它在这样做时失败的信息,并且我可以调整它而不仅仅是GUI-无障碍选择?
谢谢,
卡尔
答案 0 :(得分:2)
我想象一下:
Eclipse不希望在树中显示非C ++资源(我遇到了这个问题)
您没有启用“偏好设置&gt; C / C ++&gt;索引器&gt;索引所有文件”。
您想使用“完整的C / C ++索引器”而不是“快速C / C ++索引器”
答案 1 :(得分:1)
CDT解析器/索引器不会识别那样奇怪的扩展。您唯一能做的就是在Paths and Symbols属性页面上定义宏来欺骗解析器。尝试为具有空主体的$hdr
,$end
和$src
创建宏。这样预处理器就会删除它们,而解析器也不会阻塞它们。