【发布时间】:2017-11-22 17:55:27
【问题描述】:
我正在使用 0.66.1 版本的 uncrustify,我对设置为“强制”的“mod_full_brace_if”的行为感到困惑。它的评论说:
在单行“if”语句中添加或删除大括号。如果大括号包含“else”,则不会删除它们。
鉴于行:
if (flag) val = 10;
我希望/期望它转变为
if (flag) { val = 10; }
相反,它保持不变。
这只是我对“mod_full_brace_if”行为的误解吗?
稍后: 我有时间在家里做一些小实验。我首先创建了一个新的格式文件,并修改了一些与强制大括号与各种关键字在同一行有关的设置,以及一些强制大括号围绕单行正文的设置。我制作了一个包含以下内容的测试文件:
void foo() {
bool flag;
int var;
if (flag) var = 10;
if (!flag)
var = 20;
}
使用我的新配置文件运行 uncrustify 会产生与我在工作中看到的相同的缺乏转换。
然后我创建了另一个配置文件,只更改了“mod_full_brace_if”(更改为“强制”)。在我的测试文件中使用它会导致 if 语句的主体周围出现大括号。显然,多个设置之间存在一些奇怪的交互。我在未来看到了一些改变设置和测试的苦差事。
【问题讨论】:
-
您的示例适用于 Uncrustify-0.66.1-2-f9c285db。所以它要么是你的配置和/或代码中的其他东西。发布两者的链接。
-
@CDanU 感谢您提供的信息;知道局部有问题是很有价值的。不幸的是,配置和示例代码在我的工作机器上,在接下来的几天里我无法使用。我可以说我的测试代码非常简单,本质上是:
-
抱歉 - 被 5 分钟的编辑限制抓住了。测试代码基本上是一个文件,其中包含: void foo() { int val;布尔标志;如果(标志)val = 10; }
标签: c++ uncrustify