以下文件test.cpp

int func() {
   aaaaaaaaaaa = bbbbbbbb->cccccc(SomeNamespace::Function(dddddddd?"eeeeeeeee":"fffffffffff")).gggggggggg();
}

是通过以下方式用clang-format格式化的(我尝试了不同的样式):
$ for s in LLVM Google Chromium Mozilla WebKit; do clang-format -style="{BasedOnStyle: $s, ColumnLimit: 80}" test.cpp; done
int func() {
  aaaaaaaaaaa = bbbbbbbb
                    ->cccccc(SomeNamespace::Function(dddddddd ? "eeeeeeeee"
                                                              : "fffffffffff"))
                    .gggggggggg();
}
int func() {
  aaaaaaaaaaa = bbbbbbbb
                    ->cccccc(SomeNamespace::Function(dddddddd ? "eeeeeeeee"
                                                              : "fffffffffff"))
                    .gggggggggg();
}
int func() {
  aaaaaaaaaaa = bbbbbbbb
                    ->cccccc(SomeNamespace::Function(dddddddd ? "eeeeeeeee"
                                                              : "fffffffffff"))
                    .gggggggggg();
}
int
func()
{
  aaaaaaaaaaa =
    bbbbbbbb
      ->cccccc(SomeNamespace::Function(dddddddd ? "eeeeeeeee" : "fffffffffff"))
      .gggggggggg();
}
int func()
{
    aaaaaaaaaaa = bbbbbbbb
                      ->cccccc(SomeNamespace::Function(
                          dddddddd ? "eeeeeeeee" : "fffffffffff"))
                      .gggggggggg();
}

我想知道是否有一个选项可以防止clang-format->运算符处中断。

最佳答案

似乎没有任何选项会影响list of operator-> options中的clang-format,但是您始终可以为有问题的行禁用clang-format:

int func() {
   // clang-format off
   aaaaaaaaaaa = bbbbbbbb->cccccc(SomeNamespace::Function(dddddddd?"eeeeeeeee":"fffffffffff")).gggggggggg();
   // clang-format on
}

这将完全禁用格式化,因此,如果需要有关行的其他格式化规则,则可能需要一些手动干预。

关于c++ - 防止 clang-format 在->运算符处换行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44658400/

10-15 00:21