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