【问题标题】:Using clang-format - keep empty braces on the same line使用 clang-format - 将空括号保持在同一行
【发布时间】:2016-10-04 17:22:44
【问题描述】:

我正在尝试配置 clang-format 以便通常大括号将在自己的行上开始:

void func()
{
    if (...)
    {
        printf("Ta Da\n");
    }
}

但我希望它是这样,当大括号为空时,它将保留在一行中。 (主要用于ctors):

Bar::Bar(int val):
    _val(val)
{}

目前它看起来像这样:

Bar::Bar(int val):
    _val(val)
{
}

有什么想法吗?

(已编辑以使情况更清晰)

【问题讨论】:

  • 这是该样式的预期行为。空构造函数没有主体,因此将大括号写在同一行是有意义的。如果您想要更多选择,可以尝试 AStyle 而不是 clang-format,但我不知道这是否可能。
  • 误解了。编辑得更清楚

标签: c++ clang-format


【解决方案1】:

更新:万岁!现在可以在 Clang 5.0 或更高版本中使用自定义 BreakBeforeBraces。 请参阅documentation 中的SplitEmptyFunction

配置示例:

BreakBeforeBraces: Custom
BraceWrapping:
  SplitEmptyFunction: false

↓↓↓ 原始答案(已过时) ↓↓↓

不幸的是,不可能使用 Clang 4.0 当前的 clang 格式选项(从 Clang 4.0 开始)。 p>

来源:我也有同样的问题。在研究了每个记录的选项和许多调整尝试之后,我无法做到这一点。根据我的经验,clang 格式并不像人们希望的那样灵活。只要您想跳出预定义的样式并根据自己的喜好进行调整,它就不会削减它。

【讨论】:

  • 我也开始注意到它的局限性。但是,它似乎仍然是我们完成这项工作的最佳工具。
  • @BernardoSulzbach Clang 5 终于在同一行启用了空括号。我更新了答案。
【解决方案2】:

我使用了 “AllowShortFunctionsOnASingleLine”:真, 和 “BreakBeforeBraces”:“奥尔曼”, 在声明空构造函数等时将其变为一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-23
    • 2020-08-10
    • 1970-01-01
    • 2020-09-20
    • 2015-12-31
    • 1970-01-01
    • 2019-01-27
    相关资源
    最近更新 更多