IDE for C项目中的预处理器感知代码导航

And*_*ich 7 c ide c-preprocessor

背景

我花了很多时间来浏览和编辑复杂的科学C代码.通常它们包含使用预处理器指令打开和关闭的数百个可选功能.这使得几乎不可能一目了然地说明当前设置中是否激活了当前代码块.代码本身并没有帮助,因为每个特征都在整个地方被污染,而且一切都通常使用全局变量来完成.

是否有一个IDE可以通过折叠/着色非活动代码来处理预处理器指令?

我想,可以使用已使用标志的配置维护一个项目,并且不受非活动逻辑分支的困扰.

Rom*_*mov 8

看看类似的问题,似乎Eclipse CDT具有您需要的功能,而另一个问题实际上告诉您可以在哪里设置ifdef.

Emacs中也有类似的形式hide-ifdef-mode.

但您也可以尝试使用与IDE无关的解决方案,例如运行代码unifdef并使用结果.如果您只需要阅读代码,那几乎是完美的解决方案.如果您需要进行一些更改,事情会变得有点复杂,但您可以使用git来管理更改,例如:

  • 将整个代码库导入git
  • 跑过,匆匆处理 unifdef
  • 提交结果,这是补丁的基础
  • 在您喜欢的任何IDE /编辑器中使用代码库,像往常一样提交更改
  • 如果需要为原始代码库生成补丁,只需检查原始导入提交并从您的分支中挑选(或修改)您的补丁(当然有可能发生冲突,但它应该很容易解决如你所知,你对补丁中代码的预期更改,你只需要调整ifdefs)
  • 如果需要更新代码库,只需从原始导入开始,应用更新,提交,运行unifdef,提交,然后在此基础上重新定义更改

当然,这种方法是否有效取决于特定的代码库以及您将要用它做什么,但它在某些情况下可能很有用.