daj*_*daj 15 coding-style clang clang-format
我有兴趣为函数添加一个开括号(但不是if语句和其他上下文).例如
void foo()
{
...
}
Run Code Online (Sandbox Code Playgroud)
除了Flamewars之外,还有一个很好的理由不这样做吗?虽然我对if/else和less块使用相同的开放括号,但我认为在这种情况下,更大的代码单元(函数/方法/类/结构)的可视化组织可以胜过完美的一致性.
此外,我如何让clang-format遵循这种风格?
Pra*_*han 20
由于文档说,调用clang-format带-style=file,并使用一个.clang-format放置在一个封闭的目录文件自定义样式选项.调用指定括号放置的格式样式选项BreakBeforeBraces.从文档中,
BreakBeforeBraces(
BraceBreakingStyle)支撑破碎风格使用.
可能的值:
BS_Attach(在配置中Attach:)始终将大括号附加到周围的上下文.BS_Linux(在配置中Linux:)喜欢Attach,但在函数,命名空间和类定义的大括号之前中断.BS_Stroustrup(在配置中Stroustrup:)喜欢Attach,但在函数定义之前中断,以及'else'.BS_Allman(在配置中Allman:)总是在括号前断开.BS_GNU(在配置中GNU:)总是在大括号之前中断并为控制语句的大括号添加额外级别的缩进,而不是对类,函数或其他定义的大括号.
与您的描述匹配的样式是BS_Stroustrup.将以下条目添加到您的.clang-format
BreakBeforeBraces: Stroustrup
Run Code Online (Sandbox Code Playgroud)
除了文档之外,clangformat.com还列出了所有选项,并通过示例说明了其中的许多选项.
sag*_*age 12
Pradhan有一个很好的答案,但你可能会发现你在不想要它们的地方休息(正如我发现的那样).
还有另一个选项,"自定义",至少是clang格式版本3.8和5(我使用3.8并在5个文档中找到了BS_Custom).有了这个,您可以在BraceWrapping中指定您想要的内容,包括"AfterFunction"选项.
在下面的示例摘录中,我将其他列为true/false,因为OP的问题仅指定AfterFunction(即"在打开函数的大括号之前"):
BraceWrapping:
AfterClass: true
AfterControlStatement: true
AfterEnum: true/false
AfterFunction: true
AfterNamespace: true/false
AfterObjCDeclaration: true/false
AfterStruct: true/false
AfterUnion: true/false
BeforeCatch: true/false
BeforeElse: true/false
IndentBraces: true/false
BreakBeforeBraces: Custom
Run Code Online (Sandbox Code Playgroud)
我已经用我的配置测试了它,并且它提供了更精细的支撑破碎控制.
| 归档时间: |
|
| 查看次数: |
19552 次 |
| 最近记录: |