【问题标题】:Rearranging badly styled C code重新排列风格不佳的 C 代码
【发布时间】:2011-02-13 21:23:00
【问题描述】:

我有大约 12,000 行风格不佳的 C 代码,例如

initholeend=(mm_footer *) (end-sizeof(mm_footer));
initholeend->magic=MM_MAGIC;
initholestart->used+=amount;

我想做的是自动在所有二进制操作数和分配周围添加空格:

initholeend = (mm_footer *) (end - sizeof(mm_footer));
initholeend->magic = MM_MAGIC;
initholestart->used += amount;

有什么推荐的工具可以做到这一点吗?

提前致谢。

【问题讨论】:

  • 如果使用 Unix,请先查看 indent 实用程序可以为您做什么。
  • “我是否使用过正则表达式的大炮” 作为一般规则,正则表达式是解析的火炮,特别是它们不足以理解 c 语法(毕竟,它确实支持嵌套结构)。在这种情况下,您可能会侥幸成功,但这只是因为您的用例非常简单。

标签: c coding-style


【解决方案1】:

astyle 还不错。

【讨论】:

  • for f in $(find -iname "*.c");做一个样式 -p $f;完成了我的一天。
  • 数小时的痛苦,浓缩为不到一分钟 (?),在一行 shell 代码中。优雅。 :)
  • 不到一分钟。比我想象的要快。顺便说一句,我不得不添加 -t 因为它搞砸了我的缩进。
【解决方案2】:

我想推荐你uncrustify。我对那个代码美化器非常满意,并且为更多的编程语言提供了良好的结果。

【讨论】:

  • +1 我用的是 uncrustify,它除了有一个时髦的名字外,效果很好
  • 这看起来也很有用(从 uncrustify 页面链接到):universalindent.sourceforge.net
【解决方案3】:

大多数 IDE(和几个命令行选项)都有一个选项,可以根据您选择的编码风格“自动格式化”代码。 Eclipse 就是这样一种 IDE。

【讨论】:

  • +1 用于 Eclipse。 Eclipse 还允许您自定义代码格式的各个方面。
【解决方案4】:

经典答案是indent(1)

它有大约十亿个选项,可以满足您的要求

【讨论】:

    【解决方案5】:

    如果使用 unix,只需在 vi 中打开自动格式化功能即可。如果您使用的是 Windows 或 Mac,请使用 Codeblocks -- 或者如果您不喜欢 IDE,请使用 Notepad++ -- 其中默认使用用于平衡括号的缩进和颜色编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      相关资源
      最近更新 更多