clang 格式,数组初始化器

Posted

技术标签:

【中文标题】clang 格式,数组初始化器【英文标题】:clang-format, array initialisers 【发布时间】:2016-10-29 17:50:06 【问题描述】:

在我们的项目中,我们有时将数组初始化为一行,有时将它们初始化为块。那就是

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 off */的声明禁用clang格式 这是我考虑的选项之一,我希望有一种自动化的方式来做到这一点。 【参考方案1】:

在最后一个数组元素之后添加一个逗号会导致 clang-format(使用 v6.0.0 尝试)将元素对齐到左侧,就像您的第二个示例一样。

// With a trailing comma.
char buf[] = 
  'a',
  'b',
;

// Without a trailing comma.
char buf2[] = 'a', 'b';

【讨论】:

【参考方案2】:

试试“Cpp11BracedListStyle: false”

【讨论】:

以上是关于clang 格式,数组初始化器的主要内容,如果未能解决你的问题,请参考以下文章

Clang 格式:逗号前的空格?

如何以 clang 格式包装结构初始化程序?

仅初始化结构或数组的前 n 个成员

Visual Studio 2019 无法正确处理动态结构数组的聚合初始化

为啥 memset 在苹果 clang 编译器中工作错误?

C#学习笔记—数组初始化