相关疑难解决方法(0)

在冒号之前和在构造函数中的逗号之后放置

我正在尝试创建一个构造函数初始化程序格式,如:

Constructor()
  : initializer1(),
    initializer2()
Run Code Online (Sandbox Code Playgroud)

根据文档,我试图设置BreakConstructorInitializersBeforeColon(描述说:"在冒号之前和逗号之后打破构造函数初始化程序.",这正是我想要的),但它是在逗号之前放置,这不是我想要的是.我做错了什么,或者这是clang格式的错误?我尝试了clang-format-5.0和clang-format-6.0,它们的行为方式相同.

这是我完整的.clang格式文件:

---
Language:        Cpp
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands:   true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: All
AlwaysBreakAfterReturnType: TopLevel
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BinPackArguments: true
BinPackParameters: true
BraceWrapping:   
  AfterClass:      true
  AfterControlStatement: true
  AfterEnum:       true
  AfterFunction:   true
  AfterNamespace:  true
  AfterObjCDeclaration: true
  AfterStruct:     true
  AfterUnion:      true
  BeforeCatch:     true
  BeforeElse:      true
  IndentBraces:    true
  SplitEmptyFunction: true
  SplitEmptyRecord: …
Run Code Online (Sandbox Code Playgroud)

c++ auto-indent clang-format

9
推荐指数
1
解决办法
1517
查看次数

使用 clang 格式的“BreakConstructorInitializers: AfterColon”

我尝试使用 clang-format(版本 6.0.0)重新格式化一些 C++ 代码。大多数事情似乎工作正常。但是我在构造函数初始化列表中失败了。

这就是我所拥有的:

A::A(const char* message) : B(message)
{
}
Run Code Online (Sandbox Code Playgroud)

这就是我要的:

A::A(const char* message) : 
   B(message)
{
}
Run Code Online (Sandbox Code Playgroud)

我尝试了一个带有两个选项的 clang 格式文件:

ColumnLimit: '160'
BreakConstructorInitializers: AfterColon
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

A::A(const char *message) : B(message) {}
Run Code Online (Sandbox Code Playgroud)

但我想在冒号后换行。

事实证明,删除该ColumnLimit选项(或将其设置为0)可以解决问题,并且我得到了我想要的格式。但我打算限制行长,所以我需要ColumnLimit.

我的错误在哪里?该ColumnLimit选项是否应该BreakConstructorInitializers以如此戏剧性的方式影响行为?或者这是一个错误?

更新:刚刚尝试了 7.0.1 版。结果一样。

c++ llvm clang-format

5
推荐指数
0
解决办法
1110
查看次数

标签 统计

c++ ×2

clang-format ×2

auto-indent ×1

llvm ×1