如何在使用clang格式的访问修饰符后缩进

Gab*_*iel 14 c++ code-formatting clang-format

如何在访问修饰符后实现以下缩进:

class A{
public:
int a;
}
Run Code Online (Sandbox Code Playgroud)

应该导致

class A
{
    public:
        int a; // note the indentation
}
Run Code Online (Sandbox Code Playgroud)

clang-format只允许访问修饰符与int a AccessModifierOffset: 0结果处于同一级别

class A
{
    public:
    int a;
}
Run Code Online (Sandbox Code Playgroud)

小智 6

在我工作的地方,我们偶然发现了同样的问题。由于IndentWidth参数控制各处(类、函数等)的缩进,因此您想要实现的目标似乎是不可能的。在我看来,下一个最好的事情是保留IndentWidth=4并设置AccessModifierOffset=-2。这样你就得到:

class Foo
{
  public:
    Foo() = default;
};

bool foo()
{
    return true;
}
Run Code Online (Sandbox Code Playgroud)


god*_*odo 5

@Gabriel:从 开始clang-format-13IndentAccessModifiers您的.clang-format.

例如,您可以通过以下方式实现此目的:

UseTab: ForContinuationAndIndentation
IndentWidth: 4
TabWidth: 4
IndentAccessModifiers: true
Run Code Online (Sandbox Code Playgroud)

有关完整参考,请参阅https://clang.llvm.org/docs/ClangFormatStyleOptions.html 。