Pat*_*ryk 9 c++ formatting clang-format
具有以下结构定义:
struct city
{
};
struct country
{
};
Run Code Online (Sandbox Code Playgroud)
我想要clang-format为我格式化
struct city {};
struct country {};
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我可以看到很多选项,例如AllowShortBlocksOnASingleLine, AllowShortFunctionsOnASingleLineorAllowShortIfStatementsOnASingleLine但没有AllowShortClassDefinitionsOnASingleLine(或类似)。
不幸的是,从 clang-format 12 开始,您需要的单个功能已经缺失。
也就是说,如果您希望空结构/类位于一行中,那么您必须接受左大括号始终与or{位于同一行。为此,请设置structclass
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: false
Run Code Online (Sandbox Code Playgroud)
然后你就会有
class A {};
class B {
void foo() {}
};
Run Code Online (Sandbox Code Playgroud)
如果你想实现类似的目标
class A {};
class B
{
void foo() {}
};
Run Code Online (Sandbox Code Playgroud)
据我所知,恐怕 clang-format 无法做到这一点。
我将在下面讨论一些相关选项。
首先,假设我们已经设置了
BreakBeforeBraces: Custom
Run Code Online (Sandbox Code Playgroud)
如果没有这个,后面的所有选项都会被忽略。
然后,
BraceWrapping:
AfterClass: false
Run Code Online (Sandbox Code Playgroud)
会导致
class Foo {
// data members and member functions
};
Run Code Online (Sandbox Code Playgroud)
相比之下,
BraceWrapping:
AfterClass: true
Run Code Online (Sandbox Code Playgroud)
会导致
class Foo
{
// data members and member functions
};
Run Code Online (Sandbox Code Playgroud)
现在,给定AfterClass设置为true,然后SplitEmptyRecord确定是否将空类拆分为两行。
BraceWrapping:
SplitEmptyRecord: false
Run Code Online (Sandbox Code Playgroud)
会导致
class EmptyClass
{};
Run Code Online (Sandbox Code Playgroud)
尽管
SplitEmptyRecord: true
Run Code Online (Sandbox Code Playgroud)
会给你
class EmptyClass
{
};
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这些都没有具体解决您的问题。
作为参考,请参阅Clang-Format 样式选项
这样就可以解决问题了。
BreakBeforeBraces: Attach
Run Code Online (Sandbox Code Playgroud)
或者你可以尝试设置
BreakBeforeBraces: Custom
Run Code Online (Sandbox Code Playgroud)
并玩弄BraceWrapping. 不过,这个选项对我来说不起作用。
| 归档时间: |
|
| 查看次数: |
982 次 |
| 最近记录: |