bodieless while循环和分号之间的换行符

时间:2017-09-05 13:32:34

标签: while-loop uncrustify

在使用uncrustify时,我遇到了while循环的问题。如果while循环没有正文,则尾随分号将被推送到下一行。在GitHub和这个网站上,我没有发现这一点。问题与强制不同行中的一个衬垫有关吗?

我尝试过的代码是:(这也是它最终应该是什么样子)

int main()
{
    int i = 20000;
    while(i--);
    return 0;
}

但是,解开的是:

int main()
{
    int i = 20000;
    while (i--)
        ;
    return 0;
}

配置文件:https://pastebin.com/3FUqHmp8

1 个答案:

答案 0 :(得分:0)

使用空配置文件时不会发生这种情况,因此这种行为是由您在正在使用的配置文件中添加的选项引起的(很可能是nl_*选项之一)。

发布指向您文件的链接。

这两个选项都会导致此行为:

# Add or remove newline between 'while' and '{'.
nl_while_brace                  = force    # ignore/add/remove/force

# Change a one-liner while statement into simple unbraced while
# 'while (i<5) foo(i++);' => 'while (i<5)\n foo(i++);'.
nl_split_while_one_liner        = true     # false/true

请记住,Uncrustify还认为缺少大括号(虚拟大括号)是大括号(nl_while_brace)。

Uncrustify有一个选项可以禁用vbraces处理间距选项,但似乎它缺少新行选项。如果您需要在github存储库站点上打开一个功能或拉取请求:https://github.com/uncrustify/uncrustify