c++ - 如何获得 clang-format 以将大括号初始化构造的参数放在同一行?
问题描述
我正在运行,在此输入上使用仅指定clang-format
的文件(无效的 C++,但这对此并不重要):.clang-format
Language: Cpp
const auto SOME_VARIABLE_NAME = {{"key", { {"key2", std::array{ 0, 0, 0, 0, }}, }}};
我得到这个输出:
const auto SOME_VARIABLE_NAME = {{"key",
{
{"key2",
std::array{
0,
0,
0,
0,
}},
}}};
我会更接近以下输出:
const auto SOME_VARIABLE_NAME = {{"key",
{
{"key2",
std::array{0, 0, 0, 0}},
}}};
我不确定为什么 clang-format 在第0
50 列左右在每个 之后放置一个换行符。
我应该添加什么设置.clang-format
来实现这一点?
我尝试了一些我认为可能相关的说明符,但无济于事:
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortFunctionsOnASingleLine: true
BinPackParameters: true
BreakBeforeBinaryOperators: false
ColumnLimit: 120
ConstructorInitializerAllOnOneLineOrOnePerLine: true
Cpp11BracedListStyle: false
IndentFunctionDeclarationAfterType: true
PenaltyBreakBeforeFirstCallParameter: 1000
Standard: Cpp11
编辑:仍然有这个问题。在第一个大括号之后添加了一条注释,以至少使大括号更靠左:
const auto SOME_VARIABLE_NAME = { //
{"key",
{
{"key2",
std::array{
0,
0,
0,
0,
}},
}}};
解决方案
问题在于右大括号之前的尾随逗号。尾随逗号(在 中是可选的c++
)告诉clang-format
将每个元素放在单独的行上。我不知道这个约定是从哪里来的,而且似乎没有记录在案。在你的情况下,它似乎妨碍了。
如果您仅删除最后一个“0”之后的逗号,则默认clang-format
设置会生成:
const auto SOME_VARIABLE_NAME = {{"key",
{
{"key2", std::array{0, 0, 0, 0}},
}}};
...这不是您所要求的,但相当接近。
推荐阅读
- wordpress - Google Analytics onclick 事件中的语法错误
- python - 如何将会话值设置为采石场对象
- angular - 如何在 Angular 8 中拦截多个 http 请求?
- javascript - SyntaxError: import not found: 定义 js 类时的默认值
- node.js - 与 gcp/aws 存储桶集成的节点代码
- reactjs - 访问被拒绝。检查凭据并重试,Microsoft 图形 API,更新个人资料图片
- c++ - Visual Studio 调试优化如何工作?
- r - 在 R 循环中添加延迟
- mongodb - 按附加关键字对 MongoDB 查询进行排序
- 3dsmax - maxscript 文件存在问题