使用CDT索引所有#ifdef和#else块

时间:2012-07-12 09:14:34

标签: eclipse eclipse-cdt indexer conditional-compilation

我想在Ubuntu的Eclipse indigo上用我的CDT索引器8.0.2索引我的C / C ++源文件中的每个#ifdef和#else块。

添加符号不起作用,因为它不会涵盖#else块

有什么方法可以强制Eclipse CDT简单地忽略#ifdef和#else块?像其他索引器一样(如emacs cscope)

我一直在寻找几天,但没有找到任何好的解决方案。

我有非常多的代码,最好不要编辑它来删除#ifdefs甚至是临时代码。

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的。 CDT预处理器无法正常工作。它遵循正确的语义,这意味着它只解析#ifdef的一个分支。 Emacs可能会进入每个分支,但它没有做与CDT一样正确或完整的分析。

您唯一的选择是设置多个构建配置,这些配置配置为解析每个分支。然后,当您想要在不同分支中工作时,可以切换构建配置。这远非理想,因为设置起来可能非常耗时,并且每次切换时都会触发重新索引。 (你还必须配置它来进行重新索引,转到Window> Preferences> C / C ++> Indexer并选择“Use active build configuration”)

请注意,CDT解析器将解析非活动的#else分支,只是为了查找要在大纲视图中显示的声明。