clang格式:如何防止所有函数参数出现在下一行
clang-format: how to prevent all function arguments on next line?
我有一个C++函数调用,我手动有意地将其格式化为这个:
DoSomethingForAPurposeThatCausesALongFunctionName(
arg_0,
arg_1,
arg_2);
clang format想要像这样重新格式化:
DoSomethingForAPurposeThatCausesALongFunctionName(
arg_0, arg_1, arg_2)
我不想要这个。AllowAllParametersOfDeclarationOnNextLine
出现在控制函数声明的这种行为,但是函数调用呢?是否有相应的设置?
我的.clang-format
看起来像这样:
BasedOnStyle: Google
BinPackArguments: false
BinPackParameters: false
AllowAllParametersOfDeclarationOnNextLine: false
AlignAfterOpenBracket: AlwaysBreak
我还感兴趣的是防止多个参数在同一行上,但在fun(
行下方。在我的情况下,我不介意第一个参数是否仍然与fun(
在同一行。我只希望它们要么全部在fun(
线上,要么全部堆叠。
我能够通过将PenaltyBreakBeforeFirstCallParameter
增加到100来实现这一点。根据您的其他惩罚设置,您可能需要不同的值。
这产生:
fun(my_long_argument_0,
my_long_argument_1,
my_long_argument_2);
在您的情况下,假设DoSomethingForAPurposeThatCausesALongFunctionName(arg_0,
对于一行来说太长,它将产生:
DoSomethingForAPurposeThatCausesALongFunctionName(
arg_0,
arg_1,
arg_2);
以下配置是正确的,可以使用clang format 5.0获得所需的格式。
AlignAfterOpenBracket: AlwaysBreak
AllowAllParametersOfDeclarationOnNextLine: false
BinPackParameters: false
一个类似问题的最高投票答案中的解决方案为我工作,
尝试设置:
BinPackArguments: false
BinPackParameters: false
并确保
ExperimentalAutoDetectBinPacking: false
AllowAllParametersOfDeclarationOnNextLine: false
或未定义。
我想你需要
AllowAllParametersOfDeclarationOnNextLine: true
它对我有效,除非第一个参数与函数调用在同一行,在这种情况下,它会将它们全部放在同一线上。
我也有
ExperimentalAutoDetectBinPacking: false
这可能会产生一些影响?
我使用的是3.8.0版本。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 用c++从输入文件中读取另一行
- 从C++dll访问C#中的一行主要参数
- uncrustify:如何将多行 C 函数调用的参数组合到一行上?
- 在一行中将默认类型值上的指针作为参数传递
- 从带有 getline() 的文件读入一行上有多个信息得到无效参数错误
- 将文件的每一行作为命令行参数传递给二进制文件
- C++将字符串组合在一行中作为参数
- 在一行中定义具有相同返回类型和参数类型的多个私有函数
- clang格式:如何防止所有函数参数出现在下一行