clang-format 是否可以根据大括号的存在而采取不同的行为?

Can clang-format act differently based on the presence of braces?

我想clang-format改变:

if (condition) { printf("%d\n", 0); }

至:

if (condition) {
    printf("%d\n", 0);
}

如果我将 AllowShortIfStatementsOnASingleLine 设置为 Never,就会发生这种情况。但是,我也希望以下内容成为可能:

if (condition) return;

换句话说,我希望 clang-format 仅在存在大括号的情况下强制单独一行。使用 AllowShortIfStatementsOnASingleLine: Never,这将更改为:

if (condition)
    return;

这可能吗?

是的。您需要将 AllowShortBlocksOnASingleLine 设置为 false。然后将 AllowShortIfStatementsOnASingleLine 设置为 WithoutElseAlways(或 true,对于 10.0 之前的 clang-format 版本)。

当代码有大括号时,使用AllowShortBlocksOnASingleLine设置。当代码没有大括号时,使用 AllowShortIfStatementsOnASingleLine 设置。有关详细信息,请参阅 documentation

像这样试验样式设置的好地方是 configurator