AStyle,即Artistic Style,是一個可用於C, C++, C++/CLI, Objective‑C, C# 和Java編程語言格式化和美化的工具。咱們在使用編輯器的縮進(TAB)功能時,因爲不一樣編輯器的差異,有的插入的是製表符,有的是2個空格,有的是4個空格。這樣若是別人用另外一個編輯器來閱讀程序時,可能會因爲縮進的不一樣,致使閱讀效果一團糟。爲了解決這個問題,使用C++開發了一個插件,它能夠自動從新縮進,並手動指定空格的數量,自動格式化源文件。它是能夠經過命令行使用,也能夠做爲插件,在其餘IDE中使用。html
下載完成後,解壓,而後在環境變量PATH,添加AStyle.exe的路徑。java
基本命令行格式:linux
astyle [參數] [文件路徑]
如在個人電腦E盤下有一個文件main.c,如今是這樣的,能夠看出很不規範,多個語句寫在同一行,沒有合理縮進,運算符兩邊沒有空格等等。編程
#include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" int main(void) { delay_init(); //延時函數初始化 LED_Init(); //初始化與LED鏈接的硬件接口 while(1) { LED0=0;LED1=1; delay_ms(300); //延時300ms LED0= 1;LED1 =0; delay_ms(300); //延時300ms } }
打開CMD命令窗口,輸入如下命令:windows
AStyle --style=ansi E:\main.c
回車執行命令,而後再打開main.c查看,變成了這樣:微信
#include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" int main(void) { delay_init(); //延時函數初始化 LED_Init(); //初始化與LED鏈接的硬件接口 while(1) { LED0 = 0; LED1 = 1; delay_ms(300); //延時300ms LED0 = 1; LED1 = 0; delay_ms(300); //延時300ms } }
是否是看着很舒服,合理縮進、美觀、可讀性高,是規範的代碼風格,固然這只是AStyle一個很基礎的功能,其實它支持不少參數,還能夠對整個目錄及子目錄下的源文件進行格式化操做。編程語言
不少IDE都有自動格式化代碼功能,而單片機開發常用的Keil系列軟件竟然沒有這個功能,這怎麼能忍?還好Keil有自定義插件的功能,能夠添加AStyle自動格式化的工具,來格式化咱們不規範的代碼。編輯器
選擇Tools->Customize Tools Menu,自定義外部工具菜單。函數
點擊新建按鈕,輸入工具名稱:Astyle Current File
,Command命令選項,指定AStyle.exe的路徑,Argument選項輸入如下參數,注意大小寫,建議複製粘貼,不會出錯。工具
-pnUk1s4 --style=ansi !E
這些命令參數的含義,在下面有詳細介紹,其中!E
表示當前文件,這個參數在Keil軟件的使用手冊裏能夠查到。點擊OK保存。
好了,如今來試一下一鍵自動格式化工具吧,不管你的代碼寫的有多亂,只要點擊Tools->Astyle Current File工具,你就會發現代碼一會兒變得美觀了許多,就像這樣。
爲了更方便,咱們還能夠自定義一個快捷鍵,來執行這個命令。點擊工具欄最右邊的配置圖標,切換到Shortcut Keys選項,選擇Tools:Astyle Current File,點擊Create Shortcut建立新的快捷鍵,在彈出的窗口按下你要設置的快捷鍵,而後保存退出就能夠了,下次須要使用的時候,只要按下相對應的快捷鍵,就能夠一鍵將當前文件格式化。
其實,我仍是以爲鼠標操做更方便。
AStyle插件的參數實在太多了,這裏只介紹咱們上面那個命令中用到的參數。
-pnUk1s4 !E --style=ansi
命令參數詳解:
參數名 | 大小寫 | 說明 |
---|---|---|
p | 小寫 | 只在操做符兩邊加空格 |
P | 大寫 | 在操做符和括號兩邊都加空格 |
n | 小寫 | 不備份格式化以前的文件,後綴爲.orig,默認備份 |
U | 大寫 | 移除括號兩邊沒必要要的空格 |
d | 小寫 | 只在括號外面插入空格 |
D | 大寫 | 只在括號裏面插入空格 |
k1 | 命令 | 指針或引用運算符*/&/^號靠近類型名 |
k2 | 命令 | 指針或引用運算符*/&/^號在類型名和變量名中間 |
k3 | 命令 | 指針或引用運算符*/&/^號靠近變量名 |
s4 | 命令 | TAB鍵替換爲4個空格 |
xC80 | 命令 | 一行最大字符數,超事後會在運算符處換行 |
H | 大寫 | 在關鍵字'if','for', 'while'以後添加空格 |
S | 大寫 | switch 與case不一樣列,case縮進 |
K | 大寫 | 縮進case下面的語句 |
F | 大寫 | 空行分隔無關塊 |
x | 小寫 | 刪除多餘空行 |
--style=ansi | 命令 | 指定程序風格,如kr/linu/gnu等等 |
更多、更詳細的參數說明能夠查看自帶的幫助文檔。
下面這個bat命令能夠格式化當前目錄及子目錄下的全部源文件。
新建bat文件,以記事本打開,輸入如下命令:
for /R %%f in (*.c;*.h) do AStyle.exe --style=allman --indent=spaces=4 --pad-oper --pad-header --unpad-paren --suffix=none --align-pointer=name --lineend=windows --convert-tabs --verbose %%f pause
這裏只介紹幾種常見的代碼風格,更多的代碼風格參考幫助文檔->Brace Style Options。
allman風格
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; }
java風格
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; }
kr 風格
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; }
gnu 風格
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; }
linux 風格
int Foo(bool isBar) { if (isFoo) { bar(); return 1; } else return 0; }
google 風格
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; }
Jlink使用技巧系列文章:
歡迎你們關注個人我的博客
或微信掃碼關注個人公衆號