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

Posted

技术标签:

【中文标题】如何告诉 clang-format 缩进可见性修饰符?【英文标题】:How can I tell clang-format to indent visibility modifiers? 【发布时间】:2015-05-25 18:38:39 【问题描述】:

我希望我的可见性修饰符(publicprotectedprivate)被当前保留在与类声明相同级别的 clang-format 缩进。我在默认格式选项的转储中查找了indentvisibility,但找不到任何东西。

【问题讨论】:

【参考方案1】:

来自Clang-Format Style Options documentation:

AccessModifierOffset (int) 访问修饰符的额外缩进或缩进,例如公开:。

因此,将适当的条目添加到您的 .clang-format。例如,

AccessModifierOffset: 2

【讨论】:

有没有办法让它们后面的代码相应地缩进?仅仅使用这个只会缩进修饰符,下面的代码不跟吗?【参考方案2】:

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

class my_class 
  public:
    my_class() = default;
;

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

class my_class 
public:
  my_class() = default;
;

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

class my_class 
 public:
  my_class() = default;
;

对于IndentAccessModifiers: trueAccessModifierOffset 将被忽略。

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

【讨论】:

我沮丧地发现IndentAccessModifiers 还没有在 ClangFormat 的发布版本中。希望这个答案在 Clang 12 发布后至少在未来有用(或者对于那些现在有源 Clang 安装的人)。

以上是关于如何告诉 clang-format 缩进可见性修饰符?的主要内容,如果未能解决你的问题,请参考以下文章

clang-format:宏的缩进

我如何告诉 clang-format 遵循这个约定?

Koltin——最详细的可见性修饰符详解

对比Java学Kotlin可见性修饰符

对比Java学Kotlin可见性修饰符

对比Java学Kotlin可见性修饰符