【问题标题】:Start each << from a new line in C++ with clang-format使用 clang-format 从 C++ 中的新行开始每个 <<
【发布时间】:2021-08-20 21:09:51
【问题描述】:

考虑以下一段 C++ 代码:

void foo() {
  std::cout << "Hello, "
    << "world!"
    << std::endl;
}

当我在没有任何样式选项的情况下运行 clang-format 时,我得到了这个:

void foo() {
  std::cout << "Hello, "
            << "world!" << std::endl;
}

如何得到如下结果(每个&lt;&lt;单独一行开始)?

void foo() {
  std::cout << "Hello, "
            << "world!"
            << std::endl;
}

一个advice是用//结束每一行:

void foo() {
  std::cout << "Hello, " //
    << "world!" //
    << std::endl; //
}

但是仅使用style options 可以实现这样的缩进吗?

【问题讨论】:

  • std::cout &lt;&lt; "Hello, " &lt;&lt; "world!\n"; 问题解决了:-)
  • \nstd::endl 更常见
  • std::endl 仅用于演示目的;如果您使用变量(例如,const std::string s = "world!"),这同样适用。

标签: c++ indentation clang-format


【解决方案1】:

https://reviews.llvm.org/D80950 解释了它为什么这样做,当它最初被编写时,clang-format 做出决定,如果我们文字字符串彼此相邻流式传输,即

os << "A" << "B"

会变成

os << "A" 
   << "B"

他们会将它们放在单独的一行中,但对于其他任何事情他们都不会

os << "A" << i << "B"

这确实没有任何控制权,在每个流式操作符都被认为太多之后就中断了。

os << "A"
   << i
   << "B"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 2021-03-24
    • 2017-01-01
    • 2015-09-29
    • 2015-06-11
    • 1970-01-01
    相关资源
    最近更新 更多