# 风格选项
大括号风格选项定义要使用的大括号风格。所有选项默认为每个缩进4个空格,用空格缩进。默认情况下,所有风格都不会缩进命名空间。其他缩进在自定义风格描述中表示。所有选项都将展开单行的带有大括号的语句,并将语句放在独立一行。要更改这一点,可以使用格式化选项部分中描述的选项 **keep-one-line-blocks** 或者 **keep-one-line-statements** 语句。
[TOC]
## 默认风格
如果不需要大括号样式,将使用默认的大括号样式。开头的大括号没有改变,结尾的大括号将从前一行被打断。有一些例外情况。
## Allman 风格
**--style=allman** 或 **--style=bsd** 或 **--style=break** 或 **-A1**
```
int Foo(bool isBar)
{
if (isBar)
{
bar();
return 1;
}
else
return 0;
}
```
## Java 风格
**--style=java** 或 **--style=attach** 或 **-A2**
```
int Foo(bool isBar) {
if (isBar) {
bar();
return 1;
} else
return 0;
}
```
## K&R 风格
**--style=kr** 或 **--style=k&r** 或 **--style=k/r** 或 **-A3**
在命名空间、类和函数定义中大括号的开始和结束都是独占一行。大括号连接到函数中的所有其他内容之后,包括数组、结构、枚举和语句。
使用k&r选项可能会由于&引起问题。这可以通过将k&r括在引号中(例如: **‑‑style=“k&r”** )来解决,或者通过使用 **‑‑style=kr** 或 **‑‑style=k/r** 来解决。
```
int Foo(bool isBar)
{
if (isBar) {
bar();
return 1;
} else
return 0;
}
```
## Stroustrup 风格
**--style=stroustrup** 或 **-A4**
Stroustrup 风格使用linux大括号,但是在关闭大括号的时候,另起一行(例如:**‑‑break‑closing‑headers** )。只有函数定义的大括号采用独占一行的方式。开头大括号连接到函数中的所有其他内容之后,包括命名空间、类、数组、结构、枚举和语句。这种样式经常与“ **attach‑closing‑while** ”、带标签的缩进和5个空格的缩进一起使用。
```
int Foo(bool isBar)
{
if (isBar) {
bar();
return 1;
}
else
return 0;
}
```
## Whitesmith 风格
**--style=whitesmith** 或 **-A5**
Whitesmith 风格的大括号开头和结尾都独占一行,并且带有缩进格式。Switch代码块和类代码块都是缩进的,以防止与下面的case语句和c++类修饰符(公共、私有、受保护)进行“悬挂式缩进”。
```
int Foo(bool isBar)
{
if (isBar)
{
bar();
return 1;
}
else
return 0;
}
```
## VTK 风格
**--style=vtk** 或 **-A15**
VTK 风格除了类、数组、结构、枚举和函数定义的开头大括号外,其他情况的大括号开头和结尾都独占一行,并且带有缩进格式。Switch 代码块是缩进的,以防止与case语句有“悬挂式缩进”。
```
int Foo(bool isBar)
{
if (isBar)
{
bar();
return 1;
}
else
return 0;
}
```
## Ratliff 风格
**--style=ratliff** 或** --style=banner** 或 **-A6**
Ratliff 样式使用附加的、缩进的大括号。Switch代码块和类代码块都是缩进的,以防止与下面的case语句和c++类修饰符(公共、私有、受保护)进行“悬挂式缩进”。
```
int Foo(bool isBar) {
if (isBar) {
bar();
return 1;
}
else
return 0;
}
```
## GNU 风格
**--style=gnu** 或 **-A7**
GNU样式使用换行大括号。额外的缩进只添加到函数中的代码块中。整个代码块是缩进的,不仅仅是大括号。这种样式通常与缩进2个空格一起使用。
```
int Foo(bool isBar)
{
if (isBar)
{
bar();
return 1;
}
else
return 0;
}
```
## Linux 风格
**--style=linux** 或 **--style=knf** 或 **-A8**
Linux 风格的大括号起始符从名称空间、类和函数定义之后换行。大括号结束符连接到函数中的所有其他内容之后,包括数组、结构、枚举和语句。最小条件缩进是1 / 2缩进。如果您想要一个不同的最小条件缩进,那么使用K&R风格。这种样式最适合大的缩进。它经常与缩进8个空格一起使用。
也称为 Kernel Normal Form (KNF) 风格,这是 Linux BSD 内核中使用的样式。
```
int Foo(bool isBar)
{
if (isFoo) {
bar();
return 1;
} else
return 0;
}
```
## Horstmann 风格
**--style=horstmann** 或 **--style=run-in** 或 **-A9**
Horstmann 风格使用换行大括号和插入语句。Switch 语句被缩进以允许进入到打开开关块。这种风格通常与缩进3个空格一起使用。
```
int Foo(bool isBar)
{ if (isBar)
{ bar();
return 1;
}
else
return 0;
}
```
