c++ - Astyle - 如何将不带大括号的条件格式化为 1TBS

标签 c++ c parsing astyle

我有一个程序,它使用 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/

相关文章:

C++ 类错误消息 : no matching function for call

c++ - 使用 GLFW 渲染和 WinAPI 处理消息

一个链表节点是否可以包含多个数据字段?

c - 当程序通过 Makefile 在后台运行时,为什么 write() 调用不在终端上显示输出?

java - 识别数字数据的自然语言处理

c++ - 等待回调完成的最佳方式

c++ - 型铸结构件

c++ - Xlib:关闭窗口总是导致致命的 IO 错误?

python 解析字符串以获取模式字符串

Java方程解析1.2