BraceWrapping
BraceWrapping (BraceWrappingFlags)¶
Info
clang-format 3.8
控制大括号换行情况。
如果 BreakBeforeBraces 被设置为 BS_Custom,使用这个来指定应该如何处理每个单独的大括号。否则,这将被忽略。
# Example of usage:
BreakBeforeBraces: Custom
BraceWrapping:
AfterEnum: true
AfterStruct: false
SplitEmptyFunction: false
嵌套的配置标记:
bool AfterCaseLabel:case标签的括号
switch (foo) {
case 1:
{
bar();
break;
}
default:
{
plop();
}
}
switch (foo) {
case 1: {
bar();
break;
}
default: {
plop();
}
}
bool AfterClass:class定义的括号
class foo {};
class foo
{};
BraceWrappingAfterControlStatementStyle AfterControlStatement: 包含控制语句 (if/for/while/switch/…)
可能的值:
BWACS_Never: 不要在控制语句后面用大括号括起来。
if (foo()) {
} else {
}
for (int i = 0; i < 10; ++i) {
}
BWACS_MultiLine: 在多行控制语句后只使用大括号。
if (foo && bar &&
baz)
{
quux();
}
while (foo || bar) {
}
BWACS_Always: 在控制语句后面总是用大括号括起来。
if (foo())
{
} else
{}
for (int i = 0; i < 10; ++i)
{}
bool AfterEnum:enum定义的括号
enum X : int
{
B
};
enum X : int { B };
bool AfterFunction: 函数定义的括号
void foo()
{
bar();
bar2();
}
void foo() {
bar();
bar2();
}
bool AfterNamespace : namespace 定义的括号
namespace
{
int foo();
int bar();
}
namespace {
int foo();
int bar();
}
-
bool AfterObjCDeclaration:ObjC定义的括号 (interfaces, implementations…).@autoreleasepool和@synchronized块根据 AfterControlStatement 标志进行包装 -
bool AfterStruct:struct定义的括号
struct foo
{
int x;
};
struct foo {
int x;
};
bool AfterUnion:union定义的括号
union foo
{
int x;
}
union foo {
int x;
}
bool AfterExternBlock:extern定义的括号
extern "C"
{
int foo();
}
extern "C" {
int foo();
}
bool BeforeCatch:catch之前的括号
try {
foo();
}
catch () {
}
try {
foo();
} catch () {
}
bool BeforeElse:else之前的括号
if (foo()) {
}
else {
}
if (foo()) {
} else {
}
bool BeforeLambdaBody:lambda块的括号
connect(
[]()
{
foo();
bar();
});
connect([]() {
foo();
bar();
});
bool BeforeWhile:while前的括号
do {
foo();
}
while (1);
do {
foo();
} while (1);
-
bool IndentBraces: 缩进包装的括号本身 -
bool SplitEmptyFunction: 如果为false,则空函数体可以放在一行上。该选项仅在函数的左括号已经被包装的情况下使用,即设置了 AfterFunction 括号封装模式,并且该函数不可以/不应该放在单行上(如 AllowShortFunctionsOnASingleLine 和构造函数格式化选项)。
int f()
{
}
int f()
{}
bool SplitEmptyRecord: 如果为false,空记录(例如类,结构体或联合)主体可以放在一行上。此选项仅在记录的开括号已经被包装时使用,即设置了 AfterClass (对于类)括号封装模式。
class Foo
{
}
class Foo
{}
bool SplitEmptyNamespace: 如果为false,则空的命名空间主体可以放在一行上。该选项仅在名称空间的左大括号已经被包装时使用,即设置了AfterNamespace大括号包装模式。
namespace Foo
{
}
namespace Foo
{}
最后更新:
2022-10-31