0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MDK使用AStyle進(jìn)行代碼自動(dòng)格式化

嵌入式USB開發(fā) ? 來(lái)源:嵌入式USB開發(fā) ? 作者:嵌入式USB開發(fā) ? 2023-09-19 14:22 ? 次閱讀

本文轉(zhuǎn)自公眾號(hào),歡迎關(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

同樣方式再新建一個(gè)菜單項(xiàng)(格式化所有文件):

注:!E 表示的是當(dāng)前獲得焦點(diǎn)且正在編輯的文件。

E.c和*E*.h代表當(dāng)前獲得焦點(diǎn)且正在編輯文件所在目錄下所有.c和.h文件(參考keil uVision的幫助文檔)

使用的是Astyle默認(rèn)格式來(lái)格式化文件,另外也可以自定義格式,自定義格式參考Astyle的幫助文檔。默認(rèn)格式化后,會(huì)備份原文件為源文件名.orig。如果不想讓Astyle備份文件,可以使用-n參數(shù)。如:-n !E (表示格式化當(dāng)前文件,不備份)

3. 使用

打開待轉(zhuǎn)換文件

點(diǎn)擊菜單即可

自動(dòng)轉(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

格式化整個(gè)文件夾文檔,復(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 大括號(hào)

--style=allman / --style=bsd / --style=break / -A1

該參數(shù)指定大括號(hào)左邊單獨(dú)成一行對(duì)齊,即

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個(gè)空格。

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" { 語(yǔ)句最后的{}不單獨(dú)成行。優(yōu)先于4.1的設(shè)置。

正常模式如下

#ifdef __cplusplus
 extern "C" {
#endif

按照1設(shè)置后會(huì)變?yōu)?/p>

#ifdef __cplusplus
 extern "C" {
#endif
#ifdef __cplusplus
 extern "C" {
#endif

4.4 while語(yǔ)句

--attach-closing-while / -xV

設(shè)置該參數(shù)后while語(yǔ)句最后的}不單獨(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)體語(yǔ)句后的{不單獨(dú)成行。優(yōu)先于4.1的設(shè)置。

總是如下:

class FooClass {
...};

4.5 Switch語(yǔ)句

--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ù),條件編譯會(huì)縮進(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 注釋對(duì)齊

--indent-col1-comments / -Y

設(shè)置該參數(shù),注釋與代碼對(duì)齊

void Foo()n"{// comment
    if (isFoo)
        bar();}
becomes:
void Foo()n"{
    // comment
    if (isFoo)
        bar();}

4.9 空行

--break-blocks / -f

設(shè)置該參數(shù)會(huì)在塊之間加空行

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ù)會(huì)在操作符前后空格

isFoo = true;
if (isFoo) {
    bar();} else {
    anotherBar();}
isBar = false;
becomes:
isFoo = true;
?
if (isFoo) {
    bar();} else {
    anotherBar();}
?
isBar = false;

4.11 逗號(hào)空格

--pad-comma / -xg

設(shè)置該參數(shù)在逗號(hào)加空格

if (isFoo(a,b))
    bar(a,b);
becomes:
if (isFoo(a, b))
    bar(a, b);

4.12 刪除不必要空格

--unpad-paren / -U

設(shè)置該參數(shù)會(huì)刪除不必要的空格

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ù)會(huì)刪除不必要的空行

void Foo(){
?
    foo1 = 1;
?
    foo2 = 2;
}
becomes:
void Foo(){
    foo1 = 1;
    foo2 = 2;}

4.14 指針

--align-pointer=type / -k1

設(shè)置該參數(shù)指針?lè)?hào)* 與類型靠緊

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ù)引用符號(hào)& 與變量名靠緊

char& foo3;
becomes(with align-reference=name):
char &foo3;

5. 參考文檔

《軟件目錄/doc/astyle.html》

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 格式化
    +關(guān)注

    關(guān)注

    2

    文章

    37

    瀏覽量

    9091
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3541

    瀏覽量

    93462
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4694

    瀏覽量

    68075
  • MDK
    MDK
    +關(guān)注

    關(guān)注

    4

    文章

    207

    瀏覽量

    31986
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    keil中的代碼格式化插件Astyle介紹

    在keil中一行一行的縮進(jìn)自己的代碼,雖然注重代碼格式是一個(gè)好的習(xí)慣,不過(guò)這樣代碼比較多的話,整理起來(lái)效率太低,推薦Astyle這個(gè)工具,
    的頭像 發(fā)表于 11-28 12:29 ?3033次閱讀
    keil中的<b class='flag-5'>代碼</b><b class='flag-5'>格式化</b>插件<b class='flag-5'>Astyle</b>介紹

    atmel studio使用astyle進(jìn)行格式化代碼

    /astyle-extension/wiki/QuickStart安裝完后可以進(jìn)行相應(yīng)的配置:tools->options->astyle formatter建議把fomat on save的勾打上,這樣保存的時(shí)候就
    發(fā)表于 08-10 13:38

    [小技巧]給Keil5添加代碼格式化插件

    文件3.CoolFormat格式化設(shè)置選項(xiàng)4.使用Astyle格式化整個(gè)工程(Astyle沒(méi)有設(shè)置界面,只能自己修改參數(shù))自己修改參數(shù)可以選擇"Customize tools Menu
    發(fā)表于 09-15 19:41

    AStyle代碼格式化工具分享!

    MDK自帶編輯器沒(méi)有格式化代碼功能,樓主強(qiáng)迫癥,代碼不整齊不舒服,人工整理又很麻煩,網(wǎng)上搜了下,找到了這個(gè)。(論壇有AStyle批量整理工具
    發(fā)表于 08-13 04:07

    格式化硬盤

    格式化硬盤 軟盤只需要一次格式化,硬盤卻需要兩級(jí),即低級(jí)格式化和高級(jí)格式化?! ∮脖P的低級(jí)格式化在每個(gè)磁片上劃分
    發(fā)表于 12-25 15:40 ?1079次閱讀

    筆記本硬盤維護(hù)之格式化

    筆記本硬盤維護(hù)之格式化篇   格式化硬盤(并非低格)會(huì)影響硬盤壽命嗎?用Windows對(duì)硬盤進(jìn)行格式化與對(duì)軟盤進(jìn)行
    發(fā)表于 01-20 10:32 ?359次閱讀

    筆記本硬盤格式化幾點(diǎn)須知

    筆記本硬盤格式化幾點(diǎn)須知  格式化硬盤(并非低格)會(huì)影響硬盤壽命嗎?用Windows對(duì)硬盤進(jìn)行格式化與對(duì)軟盤進(jìn)行
    發(fā)表于 01-23 14:15 ?658次閱讀

    如何格式化硬盤

    如何格式化硬盤    這是廣大電腦初學(xué)者經(jīng)常詢問(wèn)的問(wèn)題,因?yàn)?b class='flag-5'>格式化硬盤是安裝裝系統(tǒng)的前提,所以這就成為了需要首先解決的問(wèn)題,本文將針這個(gè)
    發(fā)表于 02-24 11:25 ?437次閱讀

    格式化對(duì)硬盤有傷害嗎_硬盤格式化后數(shù)據(jù)還能恢復(fù)嗎

    普通的格式化硬盤是不會(huì)影響硬盤壽命的。硬盤格式化后數(shù)據(jù)還能恢復(fù)嗎?下面就來(lái)看看使用強(qiáng)力數(shù)據(jù)是如何將格式化后的數(shù)據(jù)給恢復(fù)的吧。
    發(fā)表于 12-14 16:09 ?1.7w次閱讀

    格式化是什么

    格式化(format)是指對(duì)磁盤或磁盤中的分區(qū)(partition)進(jìn)行初始的一種操作,這種操作通常會(huì)導(dǎo)致現(xiàn)有的磁盤或分區(qū)中所有的文件被清除。格式化通常分為低級(jí)
    的頭像 發(fā)表于 01-09 15:20 ?8.5w次閱讀

    關(guān)于MDK-ARM代碼格式化插件AStyle

    MDK-ARM代碼格式化插件AStyle
    的頭像 發(fā)表于 03-07 16:34 ?2330次閱讀

    python字符串格式化

    python字符串格式化 格式化輸出,主要有三種方式 使用 % 進(jìn)行格式化 使用 format 函數(shù)進(jìn)行
    的頭像 發(fā)表于 02-21 16:28 ?1514次閱讀
    python字符串<b class='flag-5'>格式化</b>

    Keil集成AStyle代碼格式化工具

    借助AStyle代碼格式化工具能讓我們寫的代碼看起來(lái)工整而且規(guī)范,下面來(lái)介紹一下keil如何集成AStyle
    的頭像 發(fā)表于 03-30 09:12 ?3158次閱讀
    Keil集成<b class='flag-5'>AStyle</b><b class='flag-5'>代碼</b><b class='flag-5'>格式化</b>工具

    Yapf:一個(gè)格式化 Python 代碼的好幫手

    大部分人使用Python中的代碼格式化工具時(shí)都會(huì)選擇autopep8之類的工具,這些工具可能有一定的局限性,比如不會(huì)重新格式化已經(jīng)符合 PEP8 的代碼。 而本文即將介紹的 Yapf,
    的頭像 發(fā)表于 10-17 11:08 ?713次閱讀
    Yapf:一個(gè)<b class='flag-5'>格式化</b> Python <b class='flag-5'>代碼</b>的好幫手

    Black:自動(dòng)格式化代碼的神器

    代碼規(guī)范??! 沒(méi)事,現(xiàn)在有Black這個(gè)神器,我們可以在終端中輸入一句命令就自動(dòng)格式化代碼!而且對(duì)于初學(xué)者來(lái)說(shuō),用Black來(lái)學(xué)習(xí)代碼規(guī)范也
    的頭像 發(fā)表于 11-02 14:51 ?1146次閱讀
    Black:<b class='flag-5'>自動(dòng)</b><b class='flag-5'>格式化</b><b class='flag-5'>代碼</b>的神器