函数参数延续

Function argument continuation

我正在查看 Clang-Format Style Options,但我找不到是否有以下选项。如果一个函数及其参数打破 ColumnLimit 我想在新行上继续参数。

// Good
SomeLongFunction(first_argument,
                 second_argument,
                 third_argument,
                 fourth_argument,
                 fifth_argument);

// Bad
SomeLongFunction(first_argument, second_argument, third_argument,
                 fourth_argument, fifth_argument);

看起来 AlignAfterOpenBracket 至少会让我配置在决定继续下一行时缩进的位置,但我找不到让我指定的东西来分解参数。

您可能想要:

BinPackParameters: false

有了这个,你的坏例子就被格式化成了好例子。文档:

BinPackParameters (bool)

If false, a function declaration’s or function definition’s parameters will either all be on the same line or will have one line each.

true:
void f(int aaaaaaaaaaaaaaaaaaaa, int aaaaaaaaaaaaaaaaaaaa,
       int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}

false:
void f(int aaaaaaaaaaaaaaaaaaaa,
       int aaaaaaaaaaaaaaaaaaaa,
       int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}

此外:

AllowAllParametersOfDeclarationOnNextLine: false

如果您希望中断所有参数,即使它们在一次中断后可以放在一行中,也可能很有用。文档:

AllowAllParametersOfDeclarationOnNextLine (bool)

If the function declaration doesn’t fit on a line, allow putting all parameters of a function declaration onto the next line even if BinPackParameters is false.

true:
void myFunction(
    int a, int b, int c, int d, int e);

false:
void myFunction(int a,
                int b,
                int c,
                int d,
                int e);