首页 > 解决方案 > 通过 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 吗?

标签: clang-format

解决方案


大多数情况下是可能的。你需要两件事:

  • BinPackArguments样式选项设置为false。我猜 clang-format 将大括号括起来的初始值设定项列表视为参数。(文档并没有真正指定这一点,但它似乎是合理的。)
  • 使用最后一个项目后的逗号功能。为此,请在“Atom”和右大括号之间添加一个逗号。我所见过的任何地方都没有记录此功能,但它在许多版本和多年中一直采用 clang 格式。

使用上述两种设置以及其他默认的 clang 格式设置,您的输出将如下所示:

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

推荐阅读