在我们的项目中,我们有时在一行上初始化数组,有时我们将它们初始化为块。那就是
strings::UniChar const s[] = {'H', 'e', 'l', 'l', 'o'};
与
字符串::UniChar const s[] = { 'H', 'e', 'l', 'l', 'o' };
我希望
clang-format
能够区分这两种类型,而不是将第二个类型转换为第一个类型或对齐左大括号后的元素。事情不是这样的:
strings::UniChar const s[] = {'H', 'e', 'l', 'l', 'o'};
有没有办法使用配置文件来实现这一点?
在最后一个数组元素后添加逗号会导致 clang-format (在 v6.0.0 中尝试)将元素对齐到左侧,就像第二个示例一样。
// With a trailing comma.
char buf[] = {
'a',
'b',
};
// Without a trailing comma.
char buf2[] = {'a', 'b'};
尝试“Cpp11BrcedListStyle:false”
您可以使用
//
强制换行:
strings::UniChar const s[] = {
'H', //
'e', //
'l', //
'l', //
'o' //
};
这是一个绝对相关的问题,因为仍然无法禁用数组初始值设定项的装箱。
最灵活的选项是使用注释,因为它可以让您将数组格式化为任何内容,包括视觉上不同的矩阵,例如:
static constexpr bool shape[] = {
0, 1, 0, //
1, 1, 1, //
0, 1, 1, //
};
如果没有注释,
clang-format
会将该数组放在一行中并打破列限制,并且无法通过更改配置文件来阻止它。
如果您不关心这一点并且只想要 1 列初始化,那么已经提到的
Cpp11BracedListStyle: false
就足够了。