具有以下结构定义:
struct city
{
};
struct country
{
};
我希望clang-format为我格式化
struct city {};
struct country {};
我怎样才能做到这一点?
我可以看到许多选项,例如AllowShortBlocksOnASingleLine
,AllowShortFunctionsOnASingleLine
或AllowShortIfStatementsOnASingleLine
,但没有AllowShortClassDefinitionsOnASingleLine
(或类似)。
答案 0 :(得分:2)
遗憾的是,从 clang-format 12 开始,您需要的个别功能已缺失。
也就是说,如果您希望一个空的结构体/类在一行中,那么您必须接受左花括号 {
始终与 struct
或 { 保持在同一行{1}}。为此,设置
class
然后你就会有
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: false
如果你想实现类似的东西
class A {};
class B {
void foo() {}
};
据我所知,恐怕 clang-format 无法做到这一点。
我将在下面讨论一些相关的选项。
首先,假设我们已经设置了
class A {};
class B
{
void foo() {}
};
没有这个,后面的所有选项都会被忽略。
那么,
BreakBeforeBraces: Custom
会导致
BraceWrapping:
AfterClass: false
相反,
class Foo {
// data members and member functions
};
会导致
BraceWrapping:
AfterClass: true
现在,给定 class Foo
{
// data members and member functions
};
设置为 AfterClass
,然后 true
确定是否将空类拆分为两行。
SplitEmptyRecord
会导致
BraceWrapping:
SplitEmptyRecord: false
同时
class EmptyClass
{};
会给你
SplitEmptyRecord: true
遗憾的是,这些都没有专门解决您的问题。
答案 1 :(得分:0)
这样就可以了。
BreakBeforeBraces: Attach
或者您可以尝试设置
BreakBeforeBraces: Custom
并使用BraceWrapping
。
不过,这个选项对我不起作用。