通过 clang-format 用换行分隔大括号列表的每个条目

Separate each entry of brace-enclosed lists with new-line via clang-format

我用大括号括起来的列表来初始化数组。我想让我的数组初始值设定项为数组的每个条目换行,看起来像:

const char* const array_of_strings[] = {
    "Hey",
    "Hi",
    "Hello",
    "Soup",
    "Atom"
};

尽管如此,clang-format 将此数组格式化为:

const char *const array_of_strings[] = {"Hey", "Hi", "Hello", "Soup", "Atom"};

通常是列表超过 ColumnLimit 后的新衬里。我想要的格式可以使用 clang-format 吗?

很有可能。你需要两件事:

  • BinPackArguments 样式选项设置为 false。我猜想 clang-format 将 brace-enclosed 初始值设定项列表视为参数。 (documentation 并没有真正说明这一点,但它似乎是合理的。)
  • 使用comma-after-last-item功能。为此,在“Atom”和右大括号之间添加一个逗号。这个功能在我见过的任何地方都没有记录,但它已经在 clang-format 许多版本和很多年了。

使用以上两种设置,否则默认 clang-format 设置,您的输出将如下所示:

const char *const array_of_strings[] = {
    "Hey",
    "Hi",
    "Hello",
    "Soup",
    "Atom",
};