IDE for C项目

时间:2016-07-28 11:26:45

标签: c ide c-preprocessor

背景

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

问题

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

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

3 个答案:

答案 0 :(得分:8)

看看similar question,似乎Eclipse CDT具有您需要的功能,the other question实际上告诉您可以设置ifdef的位置。

Emacs has something similar,格式为hide-ifdef-mode

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

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

当然,这种方法是否有效取决于特定的代码库以及您将如何处理它,但在某些情况下它可能很有用。

答案 1 :(得分:2)

我使用带有几个插件的Vim作为我的首选IDE(谢谢Steve Francia)。这可能不是你的一杯茶,但如果是的话,我发现了一些建议来实现这一点。

Autofold #ifdef..#endif in Vim via .vimrc

C Preprocessor Fold in Vim

答案 2 :(得分:1)

我还没有在任何IDE中听说过这个功能。但你仍然可以使用 经过预处理的代码后才能使用。 Can gcc output C code after preprocessing?