如何防止 clang-format 在流运算符调用之间添加换行符 <<

How to prevent clang-format from adding newlines between stream operator calls <<

我们目前正在使用 clang-format 格式化我们的代码库。我们发现了一种情况,如果存在两个连续的字符串文字,由于某种原因 std::cout 的流运算符被移动到下一行。在两个字符串文字之间放置一个变量会导致 clang-format 不更改格式。需要在 .clang-format 文件中更改什么才能避免这种情况?

int main()
{
    std::cout << "something" << "something" << std::endl;
}

变成

int main()
{
    std::cout << "something"
              << "something" << std::endl;
}

int main()
{
    int a = 0;
    std::cout << "something" << a << "something" << std::endl;
}

保持不变。 请注意,虽然最后一个代码段更宽,但它 不是 分成多行,而上面的较短代码段是。

这是 LLVM 9.0.0 Windows 安装程序,可以使用默认配置文件重现。

无法通过 .clang-format 文件更改此行为,因为它是代码的一部分。

此提交中引入了此行为: https://github.com/llvm-mirror/clang/commit/df28f7b8dd6a032515109de4ff5b4067be95da8e

Link 错误报告:https://bugs.llvm.org/show_bug.cgi?id=45018