EditorConfig 属性用于 C++:换行和换行规则
常规
在文件末尾换行
属性名称:
insert_final_newline, [resharper_]cpp_insert_final_newline
可能的值:
true | false
放置在新行上
在复合语句后将 'else' 放在新行上
属性名称:
[resharper_]cpp_new_line_before_else, [resharper_]new_line_before_else
可能的值:
true | false
示例:
true |
|---|
if (true)
{
foo();
}
else
{
foo();
}
|
false |
|---|
if (true)
{
foo();
} else
{
foo();
}
|
在复合语句后将 'while' 放在新行上
属性名称:
[resharper_]cpp_new_line_before_while, [resharper_]new_line_before_while
可能的值:
true | false
示例:
true |
|---|
do
{
foo();
}
while (true);
|
false |
|---|
do
{
foo();
} while (true);
|
在复合语句后将 'catch' 放在新行上
属性名称:
[resharper_]cpp_new_line_before_catch, [resharper_]new_line_before_catch
可能的值:
true | false
示例:
true |
|---|
try
{
foo();
}
catch (...)
{
foo();
}
|
false |
|---|
try
{
foo();
} catch (...)
{
foo();
}
|
在单条嵌入式语句中换行
属性名称:
[resharper_]cpp_simple_embedded_statement_style, [resharper_]simple_embedded_statement_style
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
if (true) foo();
else
foo();
|
单行 |
|---|
if (true) foo();
else foo();
|
换行 |
|---|
if (true)
foo();
else
foo();
|
在简单 'case' 语句中换行
属性名称:
[resharper_]cpp_simple_case_statement_style, [resharper_]simple_case_statement_style
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
switch (a)
{
case b: break;
case c:
break;
}
|
单行 |
|---|
switch (a)
{
case b: break;
case c: break;
}
|
换行 |
|---|
switch (a)
{
case b:
break;
case c:
break;
}
|
在成员函数定义返回值类型后换行
属性名称:
[resharper_]cpp_function_definition_return_type_style, [resharper_]function_definition_return_type_style
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
struct Boo
{
int* foo() { return 0; }
char*
bar() { return 0; }
};
|
单行 |
|---|
struct Boo
{
int* foo() { return 0; }
char* bar() { return 0; }
};
|
换行 |
|---|
struct Boo
{
int*
foo() { return 0; }
char*
bar() { return 0; }
};
|
在顶层函数定义返回值类型后换行
属性名称:
[resharper_]cpp_toplevel_function_definition_return_type_style, [resharper_]toplevel_function_definition_return_type_style
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
int* foo() { return 0; }
char*
bar() { return 0; }
|
单行 |
|---|
int* foo() { return 0; }
char* bar() { return 0; }
|
换行 |
|---|
int*
foo() { return 0; }
char*
bar() { return 0; }
|
在成员函数声明返回值类型后换行
属性名称:
[resharper_]cpp_function_declaration_return_type_style, [resharper_]function_declaration_return_type_style
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
struct Boo
{
int* foo();
char*
bar();
};
|
单行 |
|---|
struct Boo
{
int* foo();
char* bar();
};
|
换行 |
|---|
struct Boo
{
int*
foo();
char*
bar();
};
|
在顶层函数声明返回值类型后换行
属性名称:
[resharper_]cpp_toplevel_function_declaration_return_type_style, [resharper_]toplevel_function_declaration_return_type_style
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
int* foo();
char*
bar();
|
单行 |
|---|
int* foo();
char* bar();
|
换行 |
|---|
int*
foo();
char*
bar();
|
在模板声明的 template<...> 后换行
属性名称:
[resharper_]cpp_break_template_declaration, [resharper_]break_template_declaration
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
template <class T>
void foo();
template <class T> void bar();
|
单行 |
|---|
template <class T> void foo();
template <class T> void bar();
|
换行 |
|---|
template <class T>
void foo();
template <class T>
void bar();
|
在 init 语句之后换行
属性名称:
[resharper_]cpp_line_break_after_init_statement, [resharper_]line_break_after_init_statement
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
if (bool b = true; b)
foo();
|
单行 |
|---|
if (bool b = true; b)
foo();
|
换行 |
|---|
if (bool b = true;
b)
foo();
|
在 requires 子句前换行
属性名称:
[resharper_]cpp_line_break_before_requires_clause, [resharper_]line_break_before_requires_clause
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
template <bool T>
requires T
void foo();
template <bool T> requires T
void bar();
|
单行 |
|---|
template <bool T> requires T
void foo();
template <bool T> requires T
void bar();
|
换行 |
|---|
template <bool T>
requires T
void foo();
template <bool T>
requires T
void bar();
|
在成员初始值设定项列表中的冒号前换行
属性名称:
[resharper_]cpp_member_initializer_list_style, [resharper_]member_initializer_list_style
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
struct X
{
X(): x(0)
{
}
X(int x)
: x(x)
{
}
int x;
};
|
单行 |
|---|
struct X
{
X(): x(0)
{
}
X(int x): x(x)
{
}
int x;
};
|
换行 |
|---|
struct X
{
X()
: x(0)
{
}
X(int x)
: x(x)
{
}
int x;
};
|
在成员初始值设定项列表中的冒号后换行
属性名称:
[resharper_]cpp_line_break_after_colon_in_member_initializer_lists, [resharper_]line_break_after_colon_in_member_initializer_lists
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
struct X
{
X(): x(0)
{
}
X(int x)
: x(x)
{
}
int x;
};
|
单行 |
|---|
struct X
{
X(): x(0)
{
}
X(int x)
: x(x)
{
}
int x;
};
|
换行 |
|---|
struct X
{
X():
x(0)
{
}
X(int x)
:
x(x)
{
}
int x;
};
|
在尾随返回值类型中的 '->' 前断行
属性名称:
[resharper_]cpp_line_break_before_deref_in_trailing_return_types, [resharper_]line_break_before_deref_in_trailing_return_types
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
auto foo() -> int
{
}
|
单行 |
|---|
auto foo() -> int
{
}
|
换行 |
|---|
auto foo()
-> int
{
}
|
在尾随返回值类型中的 '->' 后断行
属性名称:
[resharper_]cpp_line_break_after_deref_in_trailing_return_types, [resharper_]line_break_after_deref_in_trailing_return_types
可能的值:
不要更改:不要更改单行:强制放在单行换行:强制换行
示例:
不要更改 |
|---|
auto foo() -> int
{
}
|
单行 |
|---|
auto foo() -> int
{
}
|
换行 |
|---|
auto foo() ->
int
{
}
|
在成员初始值设定项列表中的逗号前换行
属性名称:
[resharper_]cpp_line_break_before_comma_in_member_initializer_lists, [resharper_]line_break_before_comma_in_member_initializer_lists
可能的值:
true | false
示例:
true |
|---|
struct MyStruct
{
MyStruct() : first(f)
, second(s)
{
}
};
|
false |
|---|
struct MyStruct
{
MyStruct() : first(f), second(s)
{
}
};
|
在成员初始值设定项列表中的逗号后换行
属性名称:
[resharper_]cpp_line_break_after_comma_in_member_initializer_lists, [resharper_]line_break_after_comma_in_member_initializer_lists
可能的值:
true | false
示例:
true |
|---|
struct MyStruct
{
MyStruct() : first(f),
second(s)
{
}
};
|
false |
|---|
struct MyStruct
{
MyStruct() : first(f), second(s)
{
}
};
|
允许 C++/CLI 泛型约束在同一行中
属性名称:
[resharper_]cpp_place_type_constraints_on_same_line, [resharper_]place_type_constraints_on_same_line
可能的值:
true | false
示例:
true |
|---|
generic<class T>
class C
where T : IEnumerable{};
|
false |
|---|
generic<class T>
class C
where T : IEnumerable{};
|
换行规则
保留现有换行符
属性名称:
[resharper_]cpp_keep_user_linebreaks, [resharper_]keep_user_linebreaks
可能的值:
true | false
示例:
格式化之前 | 格式化之后,真 |
|---|---|
int var = condition
? SomeFunc1()
: SomeFunc2();
| int var = condition
? SomeFunc1()
: SomeFunc2();
|
格式化之前 | 格式化之后,假 |
|---|---|
int var = condition
? SomeFunc1()
: SomeFunc2();
| int var = condition ? SomeFunc1() : SomeFunc2();
|
在以下位置硬包装
属性名称:
max_line_length, [resharper_]cpp_max_line_length
可能的值:
整数
首选在 ',' 前换行
属性名称:
[resharper_]cpp_wrap_before_comma, [resharper_]wrap_before_comma
可能的值:
true | false
示例:
true |
|---|
CallMethod(arg1, arg2, arg3
, arg4, arg5, arg6
, arg7);
|
false |
|---|
CallMethod(arg1, arg2, arg3,
arg4, arg5, arg6,
arg7);
|
首选在基子句中的 ',' 前换行
属性名称:
[resharper_]cpp_wrap_before_comma_in_base_clause, [resharper_]wrap_before_comma_in_base_clause
可能的值:
true | false
示例:
true |
|---|
class Derived : BaseClass, I1
, I2, I3, I4
{
}
|
false |
|---|
class Derived : BaseClass, I1,
I2, I3, I4
{
}
|
将三元表达式换行
属性名称:
[resharper_]cpp_wrap_ternary_expr_style, [resharper_]wrap_ternary_expr_style
可能的值:
wrap_if_long: 简单换行chop_if_long:如果过长或多行则分割总是拆分:始终分割
示例:
wrap_if_long |
|---|
myField = someCondition ? true
: false;
|
chop_if_long |
|---|
myField = someCondition
? true
: false;
|
chop_always |
|---|
myField = someCondition
? true
: false;
|
首选在三元表达式中的 '?' 和 ':' 前换行
属性名称:
[resharper_]cpp_wrap_before_ternary_opsigns, [resharper_]wrap_before_ternary_opsigns
可能的值:
true | false
示例:
true |
|---|
return
hereGoesSomeBoolExpression
? returnThisIfTrue
: returnThatIfFalse;
|
false |
|---|
return
hereGoesSomeBoolExpression ?
returnThisIfTrue :
returnThatIfFalse;
|
首选在 ':' 前换行
属性名称:
[resharper_]cpp_wrap_before_colon, [resharper_]wrap_before_colon
可能的值:
true | false
示例:
true |
|---|
class Derived
: BaseClass, I1, I2, I3, I4
{
}
|
false |
|---|
class Derived : BaseClass, I1,
I2, I3, I4
{
}
|
首选在第一个 C++/CLI 泛型约束前换行
属性名称:
[resharper_]cpp_wrap_before_first_type_parameter_constraint, [resharper_]wrap_before_first_type_parameter_constraint
可能的值:
true | false
示例:
true |
|---|
generic<class T1, T2, T3>
class C
where T1: I1
where T2: I2
where T3 : ref
class
{
};
|
false |
|---|
generic<class T1, T2, T3>
class C
where T1: I1
where T2: I2
where T3 : ref
class
{
};
|
将多个 C++/CLI 泛型约束换行
属性名称:
[resharper_]cpp_wrap_multiple_type_parameter_constraints_style, [resharper_]wrap_multiple_type_parameter_constraints_style
可能的值:
wrap_if_long: 简单换行chop_if_long:如果过长或多行则分割总是拆分:始终分割
示例:
wrap_if_long |
|---|
generic<class T1, T2, T3>
class C
where T1: I1
where T2: I2
where T3 : ref
class
{
};
|
chop_if_long |
|---|
generic<class T1, T2, T3>
class C
where T1: I1
where T2: I2
where T3 : ref
class
{
};
|
chop_always |
|---|
generic<class T1, T2, T3>
class C
where T1: I1
where T2: I2
where T3 : ref
class
{
};
|
将枚举定义换行
属性名称:
[resharper_]cpp_wrap_enumeration_style, [resharper_]wrap_enumeration_style
可能的值:
wrap_if_long: 简单换行chop_if_long:如果过长或多行则分割chop_always:始终分割
示例:
wrap_if_long |
|---|
enum
{
ONE, TWO, THREE, FOUR,
FIVE, SIX, SEVEN
};
|
chop_if_long |
|---|
enum
{
ONE,
TWO,
THREE,
FOUR,
FIVE,
SIX,
SEVEN
};
|
chop_always |
|---|
enum
{
ONE,
TWO,
THREE,
FOUR,
FIVE,
SIX,
SEVEN
};
|
将带大括号的初始值设定项列表换行
属性名称:
[resharper_]cpp_wrap_braced_init_list_style, [resharper_]wrap_braced_init_list_style
可能的值:
wrap_if_long:简单换行chop_if_long:如果过长或多行则分割chop_always:始终分割
示例:
wrap_if_long |
|---|
std::map<int, std::string> m =
{
{1, "a"},
{2, {'a', 'b', 'c'}},
{3, s1}, {4, s2}
};
|
chop_if_long |
|---|
std::map<int, std::string> m =
{
{1, "a"},
{2, {'a', 'b', 'c'}},
{3, s1},
{4, s2}
};
|
chop_always |
|---|
std::map<int, std::string> m =
{
{
1,
"a"
},
{
2,
{
'a',
'b',
'c'
}
},
{
3,
s1
},
{
4,
s2
}
};
|
将基类列表换行
属性名称:
[resharper_]cpp_wrap_base_clause_style, [resharper_]wrap_base_clause_style
可能的值:
wrap_if_long:简单换行chop_if_long:如果过长或多行则分割总是拆分:始终分割
示例:
wrap_if_long |
|---|
class Derived : BaseClass, I1,
I2, I3, I4
{
}
|
chop_if_long |
|---|
class Derived : BaseClass,
I1,
I2,
I3,
I4
{
}
|
总是拆分 |
|---|
class Derived : BaseClass,
I1,
I2,
I3,
I4
{
}
|
将构造函数初始值设定项换行
属性名称:
[resharper_]cpp_wrap_ctor_initializer_style, [resharper_]wrap_ctor_initializer_style
可能的值:
wrap_if_long: 简单换行chop_if_long:如果过长或多行则分割总是拆分:始终分割
示例:
wrap_if_long |
|---|
struct XXX
{
X(): x(0), y(0), z(0)
{
}
XXX(int x, int y, int z) :
x(x), y(y), z(z)
{
}
int x;
int y;
int z;
};
|
chop_if_long |
|---|
struct XXX
{
X(): x(0), y(0), z(0)
{
}
XXX(int x, int y, int z) :
x(x),
y(y),
z(z)
{
}
int x;
int y;
int z;
};
|
总是拆分 |
|---|
struct XXX
{
X(): x(0),
y(0),
z(0)
{
}
XXX(int x, int y, int z) :
x(x),
y(y),
z(z)
{
}
int x;
int y;
int z;
};
|
将形参换行
属性名称:
[resharper_]cpp_wrap_parameters_style, [resharper_]wrap_parameters_style
可能的值:
wrap_if_long: 简单换行chop_if_long:如果过长或多行则分割chop_always:始终分割
示例:
wrap_if_long |
|---|
void SomeMethod(int p1, int p2,
int p3, int p4)
{
}
|
chop_if_long |
|---|
void SomeMethod(int p1,
int p2,
int p3,
int p4)
{
}
|
总是拆分 |
|---|
void SomeMethod(int p1,
int p2,
int p3,
int p4)
{
}
|
首选在声明中的 '(' 前换行
属性名称:
[resharper_]cpp_wrap_before_declaration_lpar, [resharper_]wrap_before_declaration_lpar
可能的值:
true | false
示例:
true |
|---|
void SomeMethod
(int p1, int p2, int p3,
int p4)
{
}
|
false |
|---|
void SomeMethod(int p1, int p2,
int p3, int p4)
{
}
|
首选在声明中的 '(' 后换行
属性名称:
[resharper_]cpp_wrap_after_declaration_lpar, [resharper_]wrap_after_declaration_lpar
可能的值:
true | false
示例:
true |
|---|
void SomeMethod(
int p1, int p2, int p3,
int p4)
{
}
|
false |
|---|
void SomeMethod(int p1, int p2,
int p3, int p4)
{
}
|
首选在声明中的 ')' 前换行
属性名称:
[resharper_]cpp_wrap_before_declaration_rpar, [resharper_]wrap_before_declaration_rpar
可能的值:
true | false
示例:
true |
|---|
void SomeMethod(int p1, int p2,
int p3, int p4
)
{
}
|
false |
|---|
void SomeMethod(int p1, int p2,
int p3, int p4)
{
}
|
将调用实参换行
属性名称:
[resharper_]cpp_wrap_arguments_style, [resharper_]wrap_arguments_style
可能的值:
wrap_if_long: 简单换行chop_if_long:如果过长或多行则分割chop_always:始终分割
示例:
wrap_if_long |
|---|
CallMethod(arg1, arg2, arg3,
arg4, arg5);
|
chop_if_long |
|---|
CallMethod(arg1,
arg2,
arg3,
arg4,
arg5);
|
chop_always |
|---|
CallMethod(arg1,
arg2,
arg3,
arg4,
arg5);
|
首选在调用中的 '(' 前换行
属性名称:
[resharper_]cpp_wrap_before_invocation_lpar, [resharper_]wrap_before_invocation_lpar
可能的值:
true | false
示例:
true |
|---|
CallMethod
(arg1, arg2, arg3, arg4,
arg5);
|
false |
|---|
CallMethod(arg1, arg2, arg3,
arg4, arg5);
|
首选在调用中的 '(' 后换行
属性名称:
[resharper_]cpp_wrap_after_invocation_lpar, [resharper_]wrap_after_invocation_lpar
可能的值:
true | false
示例:
true |
|---|
CallMethod(
arg1, arg2, arg3, arg4,
arg5);
|
false |
|---|
CallMethod(arg1, arg2, arg3,
arg4, arg5);
|
首选在调用中的 ')' 前换行
属性名称:
[resharper_]cpp_wrap_before_invocation_rpar, [resharper_]wrap_before_invocation_rpar
可能的值:
true | false
示例:
true |
|---|
CallMethod(arg1, arg2, arg3,
arg4, arg5
);
|
false |
|---|
CallMethod(arg1, arg2, arg3,
arg4, arg5);
|
首选在初始值设定项列表中的 '{' 后换行
属性名称:
[resharper_]cpp_wrap_after_expression_lbrace, [resharper_]wrap_after_expression_lbrace
可能的值:
true | false
示例:
true |
|---|
map<int, string> m = {
{1, "a"},
{2, {'a', 'b', 'c'}},
{3, s1}, {4, s2}
};
|
false |
|---|
map<int, string> m = {{1, "a"},
{2, {'a', 'b', 'c'}},
{3, s1}, {4, s2}
};
|
首选在初始值设定项列表中的 '}' 前换行
属性名称:
[resharper_]cpp_wrap_before_expression_rbrace, [resharper_]wrap_before_expression_rbrace
可能的值:
true | false
示例:
true |
|---|
map<int, string> m = {
{1, "a"},
{2, {'a', 'b', 'c'}},
{3, s1}, {4, s2}
};
|
false |
|---|
map<int, string> m = {
{1, "a"},
{2, {'a', 'b', 'c'}},
{3, s1}, {4, s2}};
|