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

    文章

    37

    浏览量

    8986
  • 编程
    +关注

    关注

    88

    文章

    3441

    浏览量

    92407
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66798
  • MDK
    MDK
    +关注

    关注

    4

    文章

    208

    浏览量

    31773
收藏 人收藏

    评论

    相关推荐

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

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

    请问RT-Thread emmc驱动编写如何格式化

    SDIO,同时也ST自带的驱动测试到了EMMC的擦除,读写操作 但是我看到使用文件系统,首先需要格式化吧,但是格式化的接口是空的,无操作。所以我想知道这个格式化驱动盘是否有什么操作要求,或者参考的
    发表于 02-23 08:04

    sourceinsight+Astyle代码格式化插件设置图文教程

    sourceinsight编辑器,大家估计都知道它的高效快捷了.使用它可以提高代码阅读和编写速度,但是代码风格调整却不是很智能.所以需要外部插件来搞定就是Astyle..Astyle的设置教程大家可以看附件.很详细.是图文教程.
    发表于 09-02 21:07

    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

    fatfs文件系统格式化代码SPI flash

    fatfs文件系统格式化代码SPI flash,求大虾帮助
    发表于 10-04 14:21

    STM32格式化代码问题

    目的是想实现数据存储,U盘拷出来,大致上是可以做出来了,不过发现还是有些小问题。 我的程序是直接用f_mkfs格式化了我的FLASH(W25Q64),也就是说插电脑不会再提示格式化。 数据
    发表于 10-25 11:46

    AStyle代码格式化工具分享!

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

    如何对MicroSD卡格式化

    使用ESP32-CAM每隔几秒拍一张照片,并存储到SD卡中。ESP32-CAM成本约为40元,用过的MicroSD卡2.实验方法格式化MicroSD卡对MicroSD卡格式化,注意选择FAT32格式
    发表于 01-21 13:58

    说一说MounRiver Studio的代码格式化

    MounRiver Studio具有代码格式化功能,方法是右键选择某个c文件,点击“代码格式化”即可。这个功能只针对某个c或h文件,一键全工程代码
    发表于 05-12 09:08

    请问keil怎么格式化代码?

    一直都是复制到格式化工具里 然后复制回来 不知道有没有快捷键格式化?
    发表于 11-08 06:32

    格式化是什么

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

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

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

    Keil集成AStyle代码格式化工具

    借助AStyle代码格式化工具能让我们写的代码看起来工整而且规范,下面来介绍一下keil如何集成AStyle
    的头像 发表于 03-30 09:12 2701次阅读
    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 421次阅读
    Yapf:一个<b class='flag-5'>格式化</b> Python <b class='flag-5'>代码</b>的好帮手