如何防止 clang-format 在新行中添加单个分号?
How to prevent clang-format from adding a single semicolon to a new line?
我在 C++ 中有这行代码
while (fread(pixel_array++, sizeof(byte), 3, fp));
但是当我使用 clang-format 时,它会拆分分号并将其添加到新行中
while (fread(pixel_array++, sizeof(byte), 3, fp))
;
我不喜欢这种风格,我更喜欢保持原来的风格。
我应该如何修改我的 clang-format 配置?谢谢
fread 不 return bool 和空 while 循环没有意义。所以最好将你的代码重写为
for(;;)
{
auto const read_bytes_count{fread(pixel_array, sizeof(byte), 3, fp)};
if((sizeof(byte) * 3) != read_bytes_count)
{
// probably deal with error handling...
break;
}
++pixel_array;
}
clang-format 5.0 目前无法识别这种类型的循环。不幸的是,从 clang-format 版本 5 开始,您将无法获得满足您需要的设置。
查找 Clang Format Style Options,我发现最接近的是 AllowShortLoopsOnASingleLine: true
,但该设置无法将循环条件识别为循环主体。
只要 clang-format 无法识别这些类型的循环,我要做的就是用 // clang-format off
标记您的代码,然后在您的代码块周围标记 // clang-format on
。
显然这是不可能的,但解决方法是用空块替换分号。如果 AllowShortLoopsOnASingleLine
和 AllowShortBlocksOnASingleLine
都设置了,那么它将被格式化为
while (fread(pixel_array++, sizeof(byte), 3, fp)) {}
我在 C++ 中有这行代码
while (fread(pixel_array++, sizeof(byte), 3, fp));
但是当我使用 clang-format 时,它会拆分分号并将其添加到新行中
while (fread(pixel_array++, sizeof(byte), 3, fp))
;
我不喜欢这种风格,我更喜欢保持原来的风格。
我应该如何修改我的 clang-format 配置?谢谢
fread 不 return bool 和空 while 循环没有意义。所以最好将你的代码重写为
for(;;)
{
auto const read_bytes_count{fread(pixel_array, sizeof(byte), 3, fp)};
if((sizeof(byte) * 3) != read_bytes_count)
{
// probably deal with error handling...
break;
}
++pixel_array;
}
clang-format 5.0 目前无法识别这种类型的循环。不幸的是,从 clang-format 版本 5 开始,您将无法获得满足您需要的设置。
查找 Clang Format Style Options,我发现最接近的是 AllowShortLoopsOnASingleLine: true
,但该设置无法将循环条件识别为循环主体。
只要 clang-format 无法识别这些类型的循环,我要做的就是用 // clang-format off
标记您的代码,然后在您的代码块周围标记 // clang-format on
。
显然这是不可能的,但解决方法是用空块替换分号。如果 AllowShortLoopsOnASingleLine
和 AllowShortBlocksOnASingleLine
都设置了,那么它将被格式化为
while (fread(pixel_array++, sizeof(byte), 3, fp)) {}