4

我大部分时间都使用 astyle 来格式化我的代码,我喜欢它,但一个烦恼是它不能为最大行长度指定至少一个“提示”。如果您有一行代码,例如:

this->mButtonCancel->setLeftClickProc(boost::bind(&FileListDialog::cancelLeftClick, this));

我希望源代码格式化程序能够适度智能地包装它:

this->mButtonCancel->setLeftClickProc(
  boost::bind(&FileListDialog::cancelLeftClick, this));

...可能是我格式化那行代码的方式。对于长参数列表,我可能更愿意在左括号上对齐,但显然这在这种情况下不起作用。无论哪种方式,astyle 都不支持对不包含多个语句的长行执行任何操作。有谁知道这样的工具吗?

4

5 回答 5

10

GNU Indent 支持打破长行。

http://www.gnu.org/software/indent/manual/indent.html#SEC12

于 2009-06-25T22:51:53.580 回答
5

我发现uncrustify命令行工具非常有用。它有大量的选项,因此有点难,但经过一些练习,它是无价的。主页在这里: http ://uncrustify.sourceforge.net/

于 2011-09-15T23:08:25.820 回答
5

Astyle 2.03 现在支持基于最大代码长度的分割线

http://astyle.sourceforge.net/astyle.html#_max-code-length

我已经对此进行了测试,它使用 max-code-length=80 分割了行,但基于尽可能少的更改。我最大化一行中的代码量,因此中断并不总是容易阅读(但它会破坏它们)

于 2013-09-05T01:56:40.593 回答
2

如果你谷歌“美化 C 代码”,你会发现一些不错的实用程序。我知道在 *nix 上有一个名为 bc 的二进制文件,它可以进行一些基本的格式化。但是,它不是很可定制。

于 2009-06-25T22:43:07.107 回答
0

如今,clang-format它支持许多配置换行ColumnLimit: 80的选项,例如宽度或其中一些用于控制何时以及如何中断

# alignments at linebreak
AlignAfterOpenBracket: true
AlignConsecutiveAssignments: true
AlignEscapedNewlines: Right
AlignTrailingComments: true

# line break penalties

PenaltyReturnTypeOnItsOwnLine: 3
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 0

AlwaysBreakTemplateDeclarations: No
于 2019-10-17T13:21:15.973 回答