2

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

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

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

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

我有大量代码,最好不要编辑它以删除#ifdefs,即使是临时的。

4

1 回答 1

0

最简洁的答案是不。CDT 预处理器不是这样工作的。它遵循正确的语义,这意味着它只解析#ifdef 的一个分支。Emacs 可能会进入每个分支,但它没有进行像 CDT 那样正确或完整的分析。

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

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

于 2012-08-29T19:52:31.407 回答