有没有一种方法可以在clang-format中禁用"SpacesInBraces"?

5

我想要这个:

int x{ 0 };

要变成这个样子:
int x{0};

但是我在文档中没有看到这个选项。

有以下选项:

  • SpacesInAngles(尖括号内是否添加空格)
  • SpacesInContainerLiterals(容器字面量内是否添加空格)
  • SpacesInParentheses(括号内是否添加空格)
  • SpacesInSquareBrackets(方括号内是否添加空格)

但是我没有看到大括号的选项。在clang-format中能做到吗?

编辑:第一个回答使用了Cpp11BracedListStyle,但它会阻止数组换行。所以即使数字字面量数组达到100个元素,也不会换行。这个副作用太大不能接受。

1个回答

5
你可以使用Cpp11BracedListStyle完成这个操作。
文档中了解到:
如果为true,则将花括号列表格式化为最适合于C++11花括号列表的样式。
重要区别如下:
  • 花括号内部没有空格。
  • 在闭合花括号前不换行。
  • 使用连续缩进而不是块缩进。

1
虽然这样做可以解决那个问题,但是它会完全阻止数组初始化时的换行。因此,即使有100个元素,它们也会在同一行上。 - The Quantum Physicist
@TheQuantumPhysicist 你有例子吗?我仍然遇到换行问题。 - Mark
尝试使用类似于 int x[] = {1,2,3,4,5,6,7,...} 的方式,直到元素数量非常大也不会出错。公平地说,无论 Cpp11BracedListStyle 是 true 还是 false,在我的情况下都没有出现错误。但我认为 Cpp11BracedListStyle 部分应该受到责备,因为它在你引用的描述中说它不会出错。 - The Quantum Physicist
@TheQuantumPhysicist 无法重现。https://godbolt.org/z/lSAL0z,如果我在左侧的代码上运行`clang-format -style=LLVM,我会得到右侧的代码。您还可以在编译器资源管理器中使用clang-format`。在设置下选择LLVM作为样式,在左侧源代码上单击右键并按格式即可。 - Mark
@TheQuantumPhysicist 我的理解是描述中说最后一个元素和闭括号之间没有换行符。 - Mark
我不确定为什么我的代码没有发生。似乎还有其他原因导致了问题。 - The Quantum Physicist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接