【问题标题】:How to indent after access modifiers with clang-format如何在使用 clang 格式的访问修饰符后缩进
【发布时间】:2017-04-22 17:17:53
【问题描述】:

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

class A{
public:
int a;
}

应该会导致

class A
{
    public:
        int a; // note the indentation
}

clang-format 只允许访问修饰符与int a AccessModifierOffset: 0 处于同一级别,从而导致

class A
{
    public:
    int a;
}

【问题讨论】:

  • 你用的是什么IDE?
  • VisualStudio 15(不幸的是)
  • 一种方法是将IndentWidth 设置为8,将AccessModifierOffset 设置为-4。但这也会影响函数内语句的缩进方式。 AFIK 没有干净的方法来做你想做的事
  • 我也没有找到办法,但是真的很好,因为这是vim中的默认设置,也是我喜欢的风格

标签: c++ code-formatting clang-format


【解决方案1】:

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

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

bool foo()
{
    return true;
}

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 2015-05-25
    • 2018-01-24
    • 1970-01-01
    • 2021-11-07
    • 2014-11-03
    • 2015-06-18
    • 2015-03-08
    • 2015-11-27
    相关资源
    最近更新 更多