防止clang格式将多行if语句折叠为单行

val*_*ano 14 c++ clang clang-format

使用具有默认设置的clang-format,如下所示:

if ((exprA) && 
    (exprB))
Run Code Online (Sandbox Code Playgroud)

变成:

if ((exprA) && (exprB))
Run Code Online (Sandbox Code Playgroud)

我试图阻止将条件折叠成一条线,但没有成功.
目前有办法实现这一目标吗?

在clang格式的文档中,BreakBeforeBinaryOperators参数似乎与我之后的最接近:

BreakBeforeBinaryOperators(BinaryOperatorStyle)
包装二元运算符的方法.

  • BOS_None(在配置中:) None断开运算符.

但它似乎只在需要包装时才会启动(超出列限制),这不是通常的情况.

Kal*_*ana 3

根据Clang 10文档,可以完成您的请求。您必须对 clang 文件进行这两项更改

  1. BraceWrapping:集合中AfterControlStatement: true
  2. 比设定后ColumnLimit: 1
output -: if ((exprA) &&
              (exprB))
Run Code Online (Sandbox Code Playgroud)

如果您有任何疑问,可以在这里尝试一下。但问题是你的其他代码也会被格式化。

没有办法只能分开 if ((exprA) && (exprB))。如果任何人都可以为此创建补丁,那么就可以做到这一点,但为此创建补丁并不那么容易。这需要大量的时间和精力。