如何解决clang-format配置后仍无法强制函数参数每行一个的问题
你之前的配置仅覆盖了函数声明/定义的形参格式化规则,缺少函数调用场景的实参控制参数,补充调整如下配置即可解决问题:
# 禁止合并函数调用实参到同一行 BinPackArguments: false # 禁止合并函数声明/定义形参到同一行 BinPackParameters: false ExperimentalAutoDetectBinPacking: false # 禁止函数声明的所有形参统一放到下一行 AllowAllParametersOfDeclarationOnNextLine: false # 禁止函数调用的所有实参统一放到下一行(你之前缺失的核心配置) AllowAllArgumentsOnNextLine: false # 括号后一旦换行就强制每个参数单独占一行 AlignAfterOpenBracket: AlwaysBreak # 可根据自己的编码规范调整单行字符上限 ColumnLimit: 80
如果配置后仍不生效,可按以下顺序排查:
- 确认clang-format版本在12及以上,旧版本对
AllowAllArgumentsOnNextLine参数支持不完善 - 执行
clang-format --dump-config命令,确认上述配置已经被实际加载,避免加载了错误路径的配置文件 - 针对个别不想被格式化调整的代码段,可使用格式化开关手动控制:
// clang-format off cls.def( "isHomogeneousElastic", &SUB::System::isHomogeneousElastic, "isHomogeneousElastic"); // clang-format on
也可以在需要强制换行的参数末尾加空注释,避免clang-format合并行:
cls.def( "isHomogeneousElastic", // &SUB::System::isHomogeneousElastic, // "isHomogeneousElastic");
内容的提问来源于stack exchange,提问作者Tom de Geus
相关产品推荐
相关产品推荐

