我有一个结构数组:
(假设标识符在其他地方
#define
...)
typedef struct
{
int a;
char id[2+1];
} T;
const T T_list[] = {
{ PRIO_HOUSE, "HI" },
{ PRIO_SOMETHING_ELSE, "WO" }
// ...
}
我想要 clang-format 来格式化它:
const T T_list[] = {
{ PRIO_HOUSE , "HI" },
{ PRIO_SOMETHING_ELSE, "WO" }
// ...
}
可以吗?
我已经阅读了文档,但在这方面我没有找到有用的东西。 https://clang.llvm.org/docs/ClangFormatStyleOptions.html
这是我的
.clang-format
---
BasedOnStyle: WebKit
BreakBeforeBraces: Allman
BraceWrapping:
AfterEnum: false
IndentCaseLabels: 'true'
AlignConsecutiveAssignments: 'true'
AlignConsecutiveDeclarations: 'true'
AlignEscapedNewlines: 'true'
AlignTrailingComments: 'true'
AllowShortFunctionsOnASingleLine: 'false'
#...
从 clang-format 版本 13 (2021) 开始,有一个新的
AlignArrayOfStructures
选项可以做到这一点。从问题中链接的现已更新的文档中:
AlignArrayOfStructures (ArrayInitializerAlignmentStyle)
clang-format 13
如果不是 None,则在对结构数组使用初始化时会将 > 字段对齐到列中。
还有一个带有
AlignArrayOfStructures: Left
的示例:
struct test demo[] = { {56, 23, "hello"}, {-1, 93463, "world"}, {7, 5, "!!" } };
不。
clang-format
不能这样做。
我的做法是:
// clang-format off
// clang-format on
如果您想要垂直对齐,则可以在使用初始值设定项列表时通过尾随逗号来实现。
之前
const T T_list[] = { { PRIO_HOUSE, "HI" }, { PRIO_SOMETHING_ELSE, "WO" } };
之后
const T T_list[] = {
{ PRIO_HOUSE, "HI" },
{ PRIO_SOMETHING_ELSE, "WO" }, // <-- notice the comma here
};
如果您想进一步调整声明,我不确定您会如何去做。但后面的逗号是步骤 1。