c++ - 防止 clang-format 将多行 if 语句折叠成单行

标签 c++ clang clang-format

使用 clang-format 和默认设置,如下:

if ((exprA) && 
    (exprB))

变成:

if ((exprA) && (exprB))

我试图防止将条件折叠成一行,但没有成功。
目前有办法实现这一点吗?

采用 clang 格式 documentationBreakBeforeBinaryOperators 参数似乎最接近我所追求的:

BreakBeforeBinaryOperators (BinaryOperatorStyle)
The way to wrap binary operators.

  • BOS_None (in configuration: None) Break after operators.

但它似乎只有在需要换行时才会起作用(超出列限制),这不是通常的情况。

最佳答案

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

  1. BraceWrapping:中设置AfterControlStatement:true
  2. 设置ColumnLimit:1之后
output -: if ((exprA) &&
              (exprB))

您可以尝试这个:Here如果您有任何疑问。但问题是您的其他代码也会被格式化。

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

关于c++ - 防止 clang-format 将多行 if 语句折叠成单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48247489/

相关文章:

c++ - 如何为非静态容器中的值编写值参数化测试?

c++ - 试图诊断C++标准for循环之间的差异并累积副作用

r - 如何避免 clang : No such file or directory error

coding-style - 如何为不同的 clang-format 版本维护 .clang-format 文件?

c++ - 将非静态数据成员作为默认参数传递给方法

c++ - C++字符串substr函数的索引问题

C++ std::getline 错误

xcode - 终端中出现 "Undefined symbols for architecture x86_64"但 xcode 中没有错误

c++ - 双冒号前的 clang 格式中断

c++ - 仅当当前行溢出 clang 格式时才在新行上加括号