我有一个程序,它使用 Astyle 将代码格式化为 1TBS。所以,如果我有这样的代码
if(condition)
func(a, b);
改成这样
if(condition) {
func(a, b);
}
<小时/>
问题是,当被调用函数中的参数被分成多行时,如下所示:
if(condition)
func(a,
b);
那么即使我尝试使用 --add-brackets
强制他,Astyle 也无法添加大括号。可以用其他方法吗?
我的命令现在看起来像这样:
astyle --style=1tbs --add-brackets test.c
最佳答案
这可能看起来有点复杂,但如果你有很多来源 添加大括号只需一次操作, 以下方案可能有效。
您可以坚持使用 astyle,但您需要 uncrustify暂时地 以及我编写的名为 whatstyle 的脚本.
在以下步骤中,将 test1.c
替换为您的源代码并保留备份
您的来源将被修改。
教astyle您的来源的当前风格
whatstyle.py -f astyle --mode resilient --output astylerc test1.c
教导你了解当前来源的风格
whatstyle.py -f uncrustify --output uncrustify.cfg test1.c
告诉 uncrustify 始终为 ifs 添加大括号
( egrep -v mod_full_brace_if < uncrustify.cfg ; echo "mod_full_brace_if = force" ) \
> uncrustify_addbrace.cfg
使用 uncrustify 重新格式化您的源代码,并尽可能少地更改样式
uncrustify --replace -c uncrustify_addbrace.cfg test1.c
现在已经添加了大括号,用astyle重新转换为原始样式。
ARTISTIC_STYLE_OPTIONS=astylerc astyle test1.c
现在,除了添加的大括号之外,您的源代码应该看起来几乎与以前相同 尽管来回风格转换可能会带来更多变化。
关于c++ - Astyle - 如何将不带大括号的条件格式化为 1TBS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38614248/