Clang-format:如何以这种方式格式化 C struct initializer
Clang-format: how to format C struct initializer this way
我正在使用 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
所以我认为依赖它是合理的。
我正在使用 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
所以我认为依赖它是合理的。