如何告诉clang-format缩进可见性修饰符?

rui*_*eco 9 c++ clang c++11 clang-format

我希望我的可见性修饰符(public,protectedprivate)由clang格式缩进,这些格式当前将它们保留在与类声明相同的级别.我已经查找indentvisibility转储了默认格式选项,但找不到任何内容.

Pra*_*han 12

Clang-Format样式选项文档:

AccessModifierOffset(int)访问修饰符的额外缩进或异常,例如public:.

因此,请将相应的条目添加到您的.clang-format.例如,

AccessModifierOffset: 2
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法让它们后面的代码相应缩进?仅使用它只会缩进修饰符,并且以下代码不遵循? (4认同)

Sam*_*lli 7

如果您想为访问修饰符本身提供自己的缩进级别,您可以使用IndentAccessModifiers: true. 这将为您提供如下所示的代码。

class my_class {
  public:
    my_class() = default;
};
Run Code Online (Sandbox Code Playgroud)

使用IndentAccessModifiers: false,默认情况下您将获得根本不缩进的访问修饰符,并且类成员将仅比周围范围缩进一级。

class my_class {
public:
  my_class() = default;
};
Run Code Online (Sandbox Code Playgroud)

然后,您可以AccessModifierOffset仅调整访问修饰符的对齐方式,而不影响类成员的对齐方式。有了IndentAccessModifiers: falseAccessModifierOffset: 1,你就会得到这个。

class my_class {
 public:
  my_class() = default;
};
Run Code Online (Sandbox Code Playgroud)

对于IndentAccessModifiers: true,AccessModifierOffset会被忽略。

我相信所有理性的程序员都会同意这些选项中只有一种是可以接受的。尽管他们可能不会就哪一个达成一致。