如何使用 clang 格式控制数组初始值设定项的缩进?
Posted
技术标签:
【中文标题】如何使用 clang 格式控制数组初始值设定项的缩进?【英文标题】:How do I control indentation of array initializers with clang-format? 【发布时间】:2015-07-31 09:30:15 【问题描述】:有时 clang-format 会这样做:
SomeType VariableName[] = Thing1,
Thing2,
Thing3
有时 clang-format 会这样做:
SomeType VariableName[] =
Thing1,
Thing2,
Thing3
而且单个字符的变化就可以让它在两者之间切换。
有什么方法可以控制它的作用吗?
我是从最新的 git 源构建的,所以可以使用最新的选项。
【问题讨论】:
您能否提供更多关于什么样的单个字符更改可以使其切换的信息?这些信息将有助于我找出答案。谢谢。 我试图为这个问题创建一个小案例,但它工作正常没有问题。 单个字符的变化是 PointerAlignment 从 Right 变为 Middle。 我不明白“工作正常没有问题”。我并没有声称存在错误。只是我更喜欢总是获得第二种样式。 【参考方案1】:根据this answer,clang-format
在某些步骤中尽可能多地放在一行上,并在其上应用ColumnLimit
。
这可以解释行为之间的转换。
One way 为防止这种情况发生,可以将ColumnLimit
设置为 0,代价是移除所有自动换行。我认为这是值得的,我相信其他人不同意。
【讨论】:
【参考方案2】:clang-format
为用户提供了一种在格式化代码时指定单个属性的方式,例如是否允许tab
,tabwidth
是什么。
您可以使用以下方式告诉clang-format
使用自定义属性。
$clang-format -style="BaseonStype: llvm, IndentWidth: 8"
$clang-format -style=HAND_WRITTEN_FORMAT_FILENAME
$clang-format -style=llvm #builtin styles.
您可以了解可以在file 中从171
行到266
行中自定义哪些属性。
【讨论】:
我知道如何更改属性。我仔细研究了clang.llvm.org/docs/ClangFormatStyleOptions.html,它似乎是最新的源。似乎没有属性可以控制这种行为,尽管较小的 ColumnLimit 通常会将其从第一种样式更改为第二种样式。以上是关于如何使用 clang 格式控制数组初始值设定项的缩进?的主要内容,如果未能解决你的问题,请参考以下文章
在 C++17 中,可以使用带有初始值设定项的 if 语句来解压可选项吗?