如何使用 clang-format 将 switch/case 中的 3 条语句保留在一行中?

问题描述 投票:0回答:1

这段代码

case 0xfc: printf("CM     $%02x%02x",code[2],code[1]); opbytes = 3; break;
case 0xfd: printf("CALL   $%02x%02x",code[2],code[1]); opbytes = 3; break;
case 0xfe: printf("CPI    #$%02x",code[1]); opbytes = 2; break;

变成

case 0xfc:
  printf("CM     $%02x%02x", code[2], code[1]);
  opbytes = 3;
  break;
case 0xfd:
  printf("CALL   $%02x%02x", code[2], code[1]);
  opbytes = 3;
  break;
case 0xfe:
  printf("CPI    #$%02x", code[1]);
  opbytes = 2;
  break;

当我格式化它时,它会将完全可读且紧凑的 3 行 switch case 变成 12 行完全不必要的格式化代码。

case 0xf1: printf("POP    PSW"); break;

保持原样

case 0xf1: printf("POP    PSW"); break;

但是当添加另一条语句时,它会重新格式化它:

case 0xf1:
  printf("POP    PSW");
  opbytes = 3;
  break;

防止这种情况发生的适当配置是什么?

我现在的

.clang-format
:

AllowShortBlocksOnASingleLine: "true"
AllowShortCaseLabelsOnASingleLine: "true"
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: WithoutElse
BreakBeforeBraces: Allman
ColumnLimit: 150

我们没有超过 150 个字符的列限制。我在第 230 行,第 79 列。即使发生了一些奇怪的事情,我们在列限制之前还有 71 个字符的余地。

c clang-format
1个回答
0
投票

可能是正确的设置,但它仅适用于 clang-format 19。

另一个(丑陋的)选项是通过在每个

// clang-format off
 之前和之后使用 
// clang-format on
case:

来防止对该段代码进行格式化。
© www.soinside.com 2019 - 2024. All rights reserved.