Clang-format:如何以这种方式格式化 C 结构初始化程序

标签 c struct initializer clang-format

我正在使用 linux 内核 .clang-format 作为引用,但这部分让我很困扰。

如何获得 clang-format 来格式化此代码

const struct my_struct hello = {.id = 0,
                                .modsmin = 10,
                                .modsmax = 20,
                                .strengthmin = 0,
                                .strengthmax = 100,
                                .color = COLOR_FOREGROUND };

到这里

const struct my_struct hello = {
    .id = 0,
    .modsmin = 10,
    .modsmax = 20,
    .strengthmin = 0,
    .strengthmax = 100,
    .color = COLOR_FOREGROUND
};

最佳答案

documentation ,似乎没有任何 clang-format 样式选项可以满足您的需求。

但是,您可以使用“comma-after-last-item”技巧。在最后一个指定的初始值设定项之后,最后一个右大括号之前放置一个逗号。我相信这仍然是有效的 C 代码。然后 clang-format 会将每个初始化程序放在单独的行上,这会将缩进移回您要查找的内容。所以输出看起来像这样:

const struct my_struct hello = {
    .id = 0,
    .modsmin = 10,
    .modsmax = 20,
    .strengthmin = 0,
    .strengthmax = 100,
    .color = COLOR_FOREGROUND,
};

这种行为在任何地方都没有记录(据我所知),所以我想它将来可能会改变。但是这种行为已经存在很多年了,clang-format的版本也很多,所以我认为依赖它是合理的。

关于Clang-format:如何以这种方式格式化 C 结构初始化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64061273/

相关文章:

c++ - 在 C++ 中初始化结构中的 const 数组

struct - 如何在 ColdFusion <2016 中保留结构中的分配顺序

C# Vector2 代码

swift - 如何覆盖 SKScene init(fileNamed : fileNamed)

c - 输入重定向和管道

c - 链接器错误: undefined reference to shared object

ios - 在初始化程序的实现中必须完成什么?

c# - 如何在实例化时将迁移应用到 EF 7 上下文?

c - OpenGL:每个图元的顶点属性数组?

c - 如何删除 int 的最高有效位(例如从 547 到 47 再到 7)?