我想在Ubuntu的Eclipse indigo上用我的CDT索引器8.0.2索引我的C / C ++源文件中的每个#ifdef和#else块。
添加符号不起作用,因为它不会涵盖#else块
有什么方法可以强制Eclipse CDT简单地忽略#ifdef和#else块?像其他索引器一样(如emacs cscope)
我一直在寻找几天,但没有找到任何好的解决方案。
我有非常多的代码,最好不要编辑它来删除#ifdefs甚至是临时代码。
答案 0 :(得分:0)
简短的回答是否定的。 CDT预处理器无法正常工作。它遵循正确的语义,这意味着它只解析#ifdef的一个分支。 Emacs可能会进入每个分支,但它没有做与CDT一样正确或完整的分析。
您唯一的选择是设置多个构建配置,这些配置配置为解析每个分支。然后,当您想要在不同分支中工作时,可以切换构建配置。这远非理想,因为设置起来可能非常耗时,并且每次切换时都会触发重新索引。 (你还必须配置它来进行重新索引,转到Window> Preferences> C / C ++> Indexer并选择“Use active build configuration”)
请注意,CDT解析器将解析非活动的#else分支,只是为了查找要在大纲视图中显示的声明。