博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C/C++代码格式优化工具----astyle
阅读量:5882 次
发布时间:2019-06-19

本文共 2090 字,大约阅读时间需要 6 分钟。

 

常用的C/C++代码格式优化工具有两个,一是老牌的indent,再一个就是astyle了。

astyle不但可以对C/C++进行格式优化,还可以处理Java和C#。版本一直在保持更新,很不容易,截止2011-12-02,已经升级到V2.02.1。

通过命令““astyle -V”可以查询版本信息,最新版本的源代码和可执行文件可以在此处【】。

 

网络上已经有很多博客介绍过astyle,如《》。

不过介绍中对astyle的参数存在些许偏差,可能是版本升级后参数发生了变化。
通过命令“astyle --help”可以获取所有参数的介绍(帮助信息里还有错字呢,有兴趣大家可以找找看)。

下面的命令可以一次性格式化某个目录下所有的源文件和头文件,非常好用,标记一下。

for /R %f in (*.cpp;*.c;*.h) do astyle --style=ansi  "%f"

基于V2.02版本,astyle主要支持的参数有:

Style-格式配置:

最常用的就是ansi或或kr格式,实际上,kr,stroustrup和linux这三种格式是非常接近的了,试了好几个文件,只有非常微小的区别,可以忽略不计。

stype

选项

--style=allman

--style=ansi
--style=bsd
--style=break
-A1

--style=java

--style=attach
-A2

--style=kr

--style=k&r
--style=k/r
-A3

--style=stroustrup

-A4

--style=whitesmith

-A5

--style=banner

-A6

代码风格

int Foo()

{
    if (isBar)
    {
        bar();
        return 1;
    }
    else
    {
        return 0;
    }
}

int Foo() {

    if (isBar) {
        bar();
        return 1;
    } else {
        return 0;
    }
}

int Foo()

{
    if (isBar) {
        bar();
        return 1;
    } else {
        return 0;
    }
}

int Foo()

{
    if (isBar) {
        bar();
        return 1;
    } else {
        return 0;
    }
}

int Foo()

    {
    if (isBar)
        {
        bar();
        return 1;
        }
    else
        {
        return 0;
        }
    }

int Foo() {

    if (isBar) {
        bar();
        return 1;
        }
    else {
        return 0;
        }
    }

stype

选项

--style=gnu

-A7

--style=linux

-A8

--style=horstmann

-A9

--style=1tbs

-A10

--style=pico

-A11

--style=lisp

-A12

代码风格

int Foo()

{
    if (isBar)
        {
            bar();
            return 1;
        }
    else
        {
            return 0;
        }
}

int Foo()

{
    if (isBar) {
        bar();
        return 1;
    } else {
        return 0;
    }
}

int Foo()

{   if (isBar)
    {   bar();
        return 1;
    }
    else
    {   return 0;
    }
}

int Foo()

{
    if (isBar) {
        bar();
        return 1;
    } else {
        return 0;
    }
}

int Foo()

{   if (isBar)
    {   bar();
        return 1; }
    else
        return 0; }

int Foo() {

    if (isBar) {
        bar();
        return 1; }
    else
        return 0; }

 

其他常用的参数:

-C

类中public,pretected,private关键字,一个tab的缩进

-S

switch中case关键字,一个tab的缩进

-K

switch中case关键字,无缩进

-N

被namespace包含的block,一个tab的缩进

-w

格式化多行的宏定义

-c

将tab转化为对应个数的空格

--mode=c

格式化的是C/C++的源文件或者头文件(缺省值)

--mode=java

格式化的是JAVA的源文件

--suffix=####

将原始文件保存为“####”后缀,而不是“orig”

--suffix=none

不保存原始文件

--exclude=####

优化时不包含“####”文件或目录

-Z

修改后保持文件的修改时间不变

-X

将错误信息输出到标准输出设备(stdout),而不是标准错误设备(stderr)

-Q

只显示格式化前后发生变化的文件

-q

不输出任何信息

-z1

使用windows版本的回车符(CRLF)

-z2

使用linux版本的回车符(LF)

--help

显示帮助信息

-v

显示版本信息

转载地址:http://elpix.baihongyu.com/

你可能感兴趣的文章
模块化服务规范——OSGI
查看>>
劣质代码评析——猜数字问题(上)
查看>>
纸上谈兵: 栈 (stack)
查看>>
Windows phone8 基础篇(三) 常用控件开发
查看>>
Oracle学习笔记之五,Oracle 11g的PL/SQL入门
查看>>
大叔手记(3):Windows Silverlight/Phone7/Mango开发学习系列教程
查看>>
考拉消息中心消息盒子处理重构(策略模式)
查看>>
so easy 前端实现多语言
查看>>
【追光者系列】HikariCP源码分析之ConcurrentBag&J.U.C SynchronousQueue、CopyOnWriteArrayList...
查看>>
在navicat中如何新建连接数据库
查看>>
canvas系列教程05-柱状图项目3
查看>>
css绘制几何图形
查看>>
HTML标签
查看>>
理解JS中的Event Loop机制
查看>>
转载:字符编码笔记:ASCII,Unicode和UTF 8
查看>>
修复看不懂的 Console Log
查看>>
Android跨进程通信 AIDL使用
查看>>
ajax常见面试题
查看>>
结合kmp算法的匹配动画浅析其基本思想
查看>>
vue进行wepack打包执行npm run build出现错误
查看>>