我遇到了有关clang格式的问题:

我要强制执行的是,始终将块开头的括号附加到函数头/控制序列上。

这意味着

int f()
{
     return 1;
}

要么
if(o < 1)

{
    return -1;
}
clang-format应该总是这样附上左括号:
int f() {
     return 1;
}


if(o < 1) {
    return -1;
}

虽然这在第一种情况下有效(函数头和花括号之间没有换行符),但是如果函数头/ if等之间存在换行符,则它不起作用。

我没有找到强制执行此操作的clang-format选项。
最接近我要寻找的选项是BreakBeforeBraces: Attach,但这也无法正确格式化第二种情况。使用此选项以及BraceWrapping下的选项也无法解决该问题。
有没有一种方法可以配置clang-format来连接行,例如左方括号总是终止于它们之前的最后一行代码的末尾?

我玩过像https://clangformat.com/http://cf.monofraps.net/这样的在线配置器,但是找不到满足我需要的选项集。

我目前使用的是clang格式的3.8版。

最佳答案

您可以使用:

MaxEmptyLinesToKeep: 0
这将导致删除空行,然后将大括号格式化为您要求的格式。
但是,我希望这对您不是一个很好的解决方案,因为它将删除所有空行,而不仅是大括号前的空行。
除此之外,我认为使用clang格式6.0.0不可能做到这一点。我也不认为它是在较新版本中添加的-documentation中似乎没有与此相关的内容。

关于c++ - 如果有换行符,则 clang-format 将不会附加大括号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51949111/

10-09 06:39
查看更多