无主体 while 循环和分号之间的换行符

Newline between bodieless while loops and semicolon

在使用 uncrustify 时,我遇到了 while 循环的问题。如果 while 循环没有主体,则尾随分号将被推到下一行。在 GitHub 和本网站上,我发现没有任何提及。问题是否与在不同线路中强制使用一个衬垫有关?

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

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

但是 uncrustify returns 是:

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

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

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

Post一个link到你的文件。


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

# 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