常用的C/C++代碼格式優化工具有兩個,一是老牌的indent,再一個就是astyle了。
astyle不但可以對C/C++進行格式優化,還可以處理Java和C#。版本一直在保持更新,很不容易,截止2011-12-02,已經升級到V2.02.1。
通過命令““astyle -V”可以查詢版本信息,最新版本的源代碼和可執行文件可以在此處【下載】。
網絡上已經有很多博客介紹過astyle,如《在VS 2008中使用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=java |
--style=kr |
--style=stroustrup |
--style=whitesmith |
--style=banner |
| 代碼風格 |
int Foo() |
int Foo() { |
int Foo() |
int Foo() |
int Foo() |
int Foo() { |
| stype |
--style=gnu |
--style=linux |
--style=horstmann |
--style=1tbs |
--style=pico |
--style=lisp |
| 代碼風格 |
int Foo() |
int Foo() |
int Foo() |
int Foo() |
int Foo() |
int Foo() { |
其他常用的參數:
| -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 |
顯示版本信息 |
ref: http://www.cppblog.com/jerryma/archive/2012/02/02/164813.html
