0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MDK使用AStyle进行代码自动格式化

嵌入式USB开发 来源:嵌入式USB开发 作者:嵌入式USB开发 2023-09-19 14:22 次阅读

本文转自公众号,欢迎关注
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

    文章

    38

    浏览量

    9101
  • 编程
    +关注

    关注

    88

    文章

    3556

    浏览量

    93519
  • 代码
    +关注

    关注

    30

    文章

    4708

    浏览量

    68174
  • MDK
    MDK
    +关注

    关注

    4

    文章

    207

    浏览量

    32005
收藏 人收藏

    评论

    相关推荐

    keil中的代码格式化插件Astyle介绍

    在keil中一行一行的缩进自己的代码,虽然注重代码格式是一个好的习惯,不过这样代码比较多的话,整理起来效率太低,推荐Astyle这个工具,
    的头像 发表于 11-28 12:29 3127次阅读
    keil中的<b class='flag-5'>代码</b><b class='flag-5'>格式化</b>插件<b class='flag-5'>Astyle</b>介绍

    atmel studio使用astyle进行格式化代码

    /astyle-extension/wiki/QuickStart安装完后可以进行相应的配置:tools->options->astyle formatter建议把fomat on save的勾打上,这样保存的时候就
    发表于 08-10 13:38

    [小技巧]给Keil5添加代码格式化插件

    文件3.CoolFormat格式化设置选项4.使用Astyle格式化整个工程(Astyle没有设置界面,只能自己修改参数)自己修改参数可以选择"Customize tools Menu
    发表于 09-15 19:41

    AStyle代码格式化工具分享!

    MDK自带编辑器没有格式化代码功能,楼主强迫症,代码不整齐不舒服,人工整理又很麻烦,网上搜了下,找到了这个。(论坛有AStyle批量整理工具
    发表于 08-13 04:07

    格式化硬盘

    格式化硬盘 软盘只需要一次格式化,硬盘却需要两级,即低级格式化和高级格式化。  硬盘的低级格式化在每个磁片上划分
    发表于 12-25 15:40 1082次阅读

    笔记本硬盘维护之格式化

    笔记本硬盘维护之格式化篇   格式化硬盘(并非低格)会影响硬盘寿命吗?用Windows对硬盘进行格式化与对软盘进行
    发表于 01-20 10:32 359次阅读

    笔记本硬盘格式化几点须知

    笔记本硬盘格式化几点须知  格式化硬盘(并非低格)会影响硬盘寿命吗?用Windows对硬盘进行格式化与对软盘进行
    发表于 01-23 14:15 660次阅读

    如何格式化硬盘

    如何格式化硬盘    这是广大电脑初学者经常询问的问题,因为格式化硬盘是安装装系统的前提,所以这就成为了需要首先解决的问题,本文将针这个
    发表于 02-24 11:25 441次阅读

    格式化对硬盘有伤害吗_硬盘格式化后数据还能恢复吗

    普通的格式化硬盘是不会影响硬盘寿命的。硬盘格式化后数据还能恢复吗?下面就来看看使用强力数据是如何将格式化后的数据给恢复的吧。
    发表于 12-14 16:09 1.7w次阅读

    格式化是什么

    格式化(format)是指对磁盘或磁盘中的分区(partition)进行初始的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被清除。格式化通常分为低级
    的头像 发表于 01-09 15:20 8.5w次阅读

    关于MDK-ARM代码格式化插件AStyle

    MDK-ARM代码格式化插件AStyle
    的头像 发表于 03-07 16:34 2348次阅读

    python字符串格式化

    python字符串格式化 格式化输出,主要有三种方式 使用 % 进行格式化 使用 format 函数进行
    的头像 发表于 02-21 16:28 1528次阅读
    python字符串<b class='flag-5'>格式化</b>

    Keil集成AStyle代码格式化工具

    借助AStyle代码格式化工具能让我们写的代码看起来工整而且规范,下面来介绍一下keil如何集成AStyle
    的头像 发表于 03-30 09:12 3183次阅读
    Keil集成<b class='flag-5'>AStyle</b><b class='flag-5'>代码</b><b class='flag-5'>格式化</b>工具

    Yapf:一个格式化 Python 代码的好帮手

    大部分人使用Python中的代码格式化工具时都会选择autopep8之类的工具,这些工具可能有一定的局限性,比如不会重新格式化已经符合 PEP8 的代码。 而本文即将介绍的 Yapf,
    的头像 发表于 10-17 11:08 743次阅读
    Yapf:一个<b class='flag-5'>格式化</b> Python <b class='flag-5'>代码</b>的好帮手

    Black:自动格式化代码的神器

    代码规范啊! 没事,现在有Black这个神器,我们可以在终端中输入一句命令就自动格式化代码!而且对于初学者来说,用Black来学习代码规范也
    的头像 发表于 11-02 14:51 1215次阅读
    Black:<b class='flag-5'>自动</b><b class='flag-5'>格式化</b><b class='flag-5'>代码</b>的神器