如何防止clang-format将单个分号添加到新行?

时间:2017-04-04 04:42:44

标签: c++ coding-style clang clang-format

我在C ++中有这行代码

while (fread(pixel_array++, sizeof(byte), 3, fp));

但是当我使用clang-format时,它会拆分分号并将其添加到新行中

while (fread(pixel_array++, sizeof(byte), 3, fp))
    ;

我不喜欢这种风格,我只想保留原来的风格。

我应该如何修改我的clang格式配置?感谢。

3 个答案:

答案 0 :(得分:2)

clang-format 5.0目前还没有识别出这种类型的循环。不幸的是,从clang格式版本5开始,您无法获得满足您需求的设置。

查找Clang Format Style Options,我发现的最接近的是AllowShortLoopsOnASingleLine: true,但该设置并未将循环条件识别为循环体。

只要clang-format没有识别出这种类型的循环,我要做的就是用// clang-format off然后// clang-format on围绕你的代码标记你的代码。代码。

答案 1 :(得分:0)

显然这是不可能的,但是一种解决方法是用空块替换分号。如果同时设置了AllowShortBlocksOnASingleLinewhile (fread(pixel_array++, sizeof(byte), 3, fp)) {} ,则其格式将为

this.dataSource = new MatTableDataSource(results);
this.dataSource.sort = this.sort;
this.dataSource.filterPredicate = function(data: any, filterValue: string) {
  return data.specificColumn /** replace this with the column name you want to filter */
    .trim()
    .toLocaleLowerCase().indexOf(filterValue.trim().toLocaleLowerCase()) >= 0;
};

答案 2 :(得分:-1)

fread不返回bool并且空循环没有意义。因此,将代码重写为

会更好
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;
}