本文轉自公眾號,歡迎關注
https://mp.weixin.qq.com/s/uzaGLFTDBAn8wyR84yaiIw
1. 下載軟件
1.1 進入網址https://sourceforge.net/projects/astyle/files/latest/download,下載最新版本AStyle。
1.2 解壓壓縮包到MDK安裝目錄
2. 配置MDK
2.1 Tools -> CustomizeTools Menu...
2.2 點擊Menu Content后的虛線框按鈕(New (Insert))
輸入新建的菜單名:格式化本文件
指定AStyle.exe的路徑
指定參數 !E
同樣方式再新建一個菜單項(格式化所有文件):
注:!E 表示的是當前獲得焦點且正在編輯的文件。
E.c和*E*.h代表當前獲得焦點且正在編輯文件所在目錄下所有.c和.h文件(參考keil uVision的幫助文檔)
使用的是Astyle默認格式來格式化文件,另外也可以自定義格式,自定義格式參考Astyle的幫助文檔。默認格式化后,會備份原文件為源文件名.orig。如果不想讓Astyle備份文件,可以使用-n參數。如:-n !E (表示格式化當前文件,不備份)
3. 使用
打開待轉換文件
點擊菜單即可
自動轉換。
4. 符合spacety編程規范的格式化參數
根據spacety編程規范,使用以下參數進行格式化
格式化本文檔,復制以下文本設置
!E -A1 -s4 -xk -xV -xc -S -xW -Y -f -p -xg -U -xe -k1 -W3
格式化整個文件夾文檔,復制以下文本設置
"*E.c" "*E.h" -A1 -s4 -xk -xV -xc -S -xW -Y -f -p -xg -U -xe -k1 -W3
以下是符合spacety編程規范的參數的解釋,其他參數參參考《5.參考文檔》
4.1 大括號
--style=allman / --style=bsd / --style=break / -A1
該參數指定大括號左邊單獨成一行對齊,即
if (input.interface == if_a) {
ifout = if_b;
} else {
ifout = if_a;
}
變為
if (input.interface == if_a)
{
ifout = if_b;
}
else
{
ifout = if_a;
}
4.2 TAB和空格
-s4 / --indent=spaces=4
默認即TAB為上述參數設置,即TAB為4個空格。
if (input.interface == if_a)
{
ifout = if_b;
}
else
{
ifout = if_a;
}
變為
if (input.interface == if_a)
{
ifout = if_b;
}
else
{
ifout = if_a;
}
4.3 頭文件的extern c申明
--attach-extern-c / -xk
設置該參數后extern "C" { 語句最后的{}不單獨成行。優先于4.1的設置。
正常模式如下
#ifdef __cplusplus
extern "C" {
#endif
按照1設置后會變為
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
extern "C" {
#endif
4.4 while語句
--attach-closing-while / -xV
設置該參數后while語句最后的}不單獨成行。優先于4.1的設置。
do
{
}
while(x == 1);
變為
do
{
}while(x == 1);
4.5 結構體/類
--attach-classes / -xc
設置該參數后結構體語句后的{不單獨成行。優先于4.1的設置。
總是如下:
class FooClass {
...};
4.5 Switch語句
--indent-switches / -S
switch (foo)
{
case 1:
a += 1;
break;
case 2:
{
a += 2;
break;
}
}
becomes:
switch (foo)
{
case 1:
a += 1;
break;
?
case 2:
{
a += 2;
break;
}
}
4.6 條件編譯
--indent-preproc-block / -xW
設置該參數,條件編譯會縮進
#ifdef _WIN32
#include < windows.h >
#ifndef NO_EXPORT
#define EXPORT
#endif
#endif
becomes:
#ifdef _WIN32
#include < windows.h >
#ifndef NO_EXPORT
#define EXPORT
#endif
#endif
4.8 注釋對齊
--indent-col1-comments / -Y
設置該參數,注釋與代碼對齊
void Foo()n"{// comment
if (isFoo)
bar();}
becomes:
void Foo()n"{
// comment
if (isFoo)
bar();}
4.9 空行
--break-blocks / -f
設置該參數會在塊之間加空行
isFoo = true;
if (isFoo) {
bar();} else {
anotherBar();}
isBar = false;
becomes:
isFoo = true;
?
if (isFoo) {
bar();} else {
anotherBar();}
?
isBar = false;
4.10 操作符空格
--pad-oper / -p
設置該參數會在操作符前后空格
isFoo = true;
if (isFoo) {
bar();} else {
anotherBar();}
isBar = false;
becomes:
isFoo = true;
?
if (isFoo) {
bar();} else {
anotherBar();}
?
isBar = false;
4.11 逗號空格
--pad-comma / -xg
設置該參數在逗號加空格
if (isFoo(a,b))
bar(a,b);
becomes:
if (isFoo(a, b))
bar(a, b);
4.12 刪除不必要空格
--unpad-paren / -U
設置該參數會刪除不必要的空格
if ( isFoo( ( a+2 ), b ) )
bar ( a, b );
becomes (with no padding option requested):
if(isFoo((a+2), b))
bar(a, b);
4.13 刪除空行
--delete-empty-lines / -xe
設置該參數會刪除不必要的空行
void Foo(){
?
foo1 = 1;
?
foo2 = 2;
}
becomes:
void Foo(){
foo1 = 1;
foo2 = 2;}
4.14 指針
--align-pointer=type / -k1
設置該參數指針符號* 與類型靠緊
char* foo1;
char & foo2;
string ^s1;
becomes (with align-pointer=type):
char* foo1;
char& foo2;
string^ s1;
4.15 引用
--align-reference=name / -W3
設置該參數引用符號& 與變量名靠緊
char& foo3;
becomes(with align-reference=name):
char &foo3;
5. 參考文檔
《軟件目錄/doc/astyle.html》
審核編輯:湯梓紅
-
格式化
+關注
關注
2文章
39瀏覽量
9112 -
編程
+關注
關注
88文章
3614瀏覽量
93685 -
代碼
+關注
關注
30文章
4779瀏覽量
68521 -
MDK
+關注
關注
4文章
209瀏覽量
32063
發布評論請先 登錄
相關推薦
評論