clang-format能否仅为类内联成员函数配置左大括号紧跟且不合并单行
clang-format配置方案
可以通过对应配置项组合实现你需要的代码格式规则,完整配置如下:
BasedOnStyle: LLVM BreakBeforeBraces: Custom BraceWrapping: AfterClass: true AfterControlStatement: Never AfterEnum: true AfterFunction: true AfterNamespace: true AfterObjCDeclaration: true AfterStruct: true AfterUnion: true AfterExternBlock: true BeforeCatch: true BeforeElse: true LambdaBody: false # 类内联成员函数左大括号不单独换行 AfterInlineFunction: false # 禁止短函数体合并到同一行 AllowShortBlocksOnASingleLine: Never AllowShortFunctionsOnASingleLine: None
关键配置说明
AfterInlineFunction: false:专门控制类内定义的内联成员函数的左大括号行为,设为false时左大括号会紧跟函数声明,不会单独起行AfterFunction: true:保证顶层自由函数、类外定义的成员函数的左大括号单独换行AllowShortBlocksOnASingleLine: Never+AllowShortFunctionsOnASingleLine: None:完全禁止将短函数体内容合并到与左大括号同一行,避免出现int bar() { return 10; }的格式,满足函数体内断点调试的需求
格式效果验证
类内成员函数效果
class Foo { // 符合要求的格式 int bar() { return 10; } };
顶层/类外定义函数效果
int main() { return 0; } int Foo::bar() { return 10; }
注意事项
AfterInlineFunction配置项仅在clang-format 12及以上版本支持,若使用更低版本需要先升级工具版本。
内容的提问来源于stack exchange,提问作者Pete
相关产品推荐
相关产品推荐

