电子产业一站式赋能平台

PCB联盟网

搜索
查看: 14|回复: 0
收起左侧

如何3秒搞定MDK工程全部代码的格式化?

[复制链接]

285

主题

285

帖子

2050

积分

三级会员

Rank: 3Rank: 3

积分
2050
发表于 6 天前 | 显示全部楼层 |阅读模式
关注公众号,回复“入门资料”获取单片机入门到高级开挂教程
开发板带你入门,我们带你飞

文 | 无际(微信:2777492857)
全文约1793字,阅读大约需要 5 分钟
今天,咱们来聊一个让无数单片机软件初学者和工程师闻风丧胆的话题---代码格式化。
           
可能有些人不知道啥叫代码格式化,简单来说就是给你的代码进行排版。
           
比如下面这段代码,排版是不是很乱?很业余?

2operfvzy4t6404726814.png

2operfvzy4t6404726814.png

代码格式化以后的效果:   

fox5jgky3ts6404726915.png

fox5jgky3ts6404726915.png

是不是瞬间专业清晰多了?
           
为什么代码格式化是个问题?
           
先说说为啥代码格式化会让人抓狂,特别是单片机开发:
MDK自带功能有限:Keil有基本的格式化选项,但调整缩进、换行都得手动,效果也不理想。
           
初学者习惯随意:刚学单片机时,注意力都在功能上,格式往往顾不上,时间一长就乱成一团,我刚入门单片机那会儿就是这样,一心只想快点完成任务,免得不能按时完成挨叼。
           
于是乎,项目越写越大,代码行数从几十行飙到几千行,甚至几万行,每次回头改个小bug,我都得瞪大眼睛在乱糟糟的代码里找半天,调试效率低到炸裂。那感觉,就像在垃圾堆里翻找一颗钻石,心态直接崩了。
           
调试和协作困难:代码不整齐,找变量、查逻辑都费劲,要是跟别人合作开发,风格不统一更麻烦,别人还会在内心鄙视你。
           
格式化得好,代码不仅看着舒服,调试和维护也更顺手。
               
今天我就推荐一款神器AStyle,就是解决这问题的,第一次把AStyle集成到MDK时,我简直像发现了新大陆,以前手动调整缩进、空格,得花半小时搞定的文件,现在点一下鼠标,3秒钟搞定!
           
AStyle(Artistic Style)是个开源的代码格式化工具,支持C/C++等语言,正好适合单片机开发。
           
它能自动调整缩进、对齐大括号、整理换行,把乱七八糟的代码变得井井有条。咱们直接上手,跟着做。
           
总结3大作用:
1.一键格式化MDK代码:用AStyle把乱糟糟的代码变得整齐划一,省时省力。
           
2.自定义代码风格:想让代码长啥样就长啥样,满足你和团队的所有“强迫症”需求。
           
3.提升代码逼格:写出优雅代码,从业余码农变身成专业码农。
           
废话不多说,直接上干货。下面,我将一步步教你如何用AStyle搞定MDK的代码格式化,保证简单易懂,小白也能上手。
           
一、下载并安装AStyle
AStyle是个跨平台工具,Windows、Linux、macOS都能用。
           
下载地址:https://sourceforge.net/projects/astyle/
           
如果下载不了,也可以找我发你。
           
安装方式:解压到任意目录,比如D:\Keil_arm,记住路径就行,不需要复杂安装,解压就能用,记住这个路径,后面要用。   
           
二、集成到MDK,一键格式化
MDK支持调用外部工具,咱把AStyle加进去。
配置步骤:         
打开MDK,点菜单Tools -> Customize Tools Menu。

in2ibl4oijh6404727015.png

in2ibl4oijh6404727015.png

           
         
点击New,填入以下内容:
Menu Text:随便填,比如我这里新建了一个"Format Code"。   

xtwfsmceivl6404727115.png

xtwfsmceivl6404727115.png

Command:AStyle路径,添加你刚刚解压缩的位置,我是直接放在Keil MDK的安装目录
           
比如D:\Keil_arm\astyle-3.6.6-x64\astyle.exe   

lxm0eudazjv6404727215.png

lxm0eudazjv6404727215.png

Arguments:AStyle的命令参数
           
比如我的命令是:
-n !E --style=allman -p -s4 -S -f -xW -w -xw
           
这些命令都是啥意思?
           
-n
不生成备份文件,原文件直接覆盖,没后悔药。
           
!E
这个我也没搞清楚。
           
--style=allman
用Allman风格,大括号独占一行,代码看着清楚。   
           
-p
指针和运算符两边加空格,比如x=y变x = y。
           
-s4
缩进用4个空格,比默认2空格更明显。
           
-S
switch里的case缩进一层,结构更分明。
           
-f
空的{}强制换行,格式统一。
           
-xW
C++类修饰符(public/private)缩进对齐,C代码用不上。
           
-w
多行条件语句加括号,比如if (a && b)变块状。
           
-xw
while/do-while循环体再缩进一层,突出循环。
           
说了这么多,好像你就能记住似的,你就直接复制我的用就好了,别折腾了。
Initial Folder:留空就行,然后点OK保存。   

zicslxu1jd16404727315.png

zicslxu1jd16404727315.png

           
三、使用方法         
打开一个.c文件,把里面的代码格式打乱,然后保存(必须),Keil保存编辑后的代码,快捷键是Ctrl+S。   

honbkrxkzbt6404727415.png

honbkrxkzbt6404727415.png

           
然后菜单里选“Format Code”。

l4odgbug3lp6404727515.png

l4odgbug3lp6404727515.png

           
格式化后如下,立马清爽多了。   

djauoujqtvx6404727615.png

djauoujqtvx6404727615.png

           
           
四:批量处理项目文件
项目里文件多,一个个点太慢,AStyle也支持批量操作。
           
配置步骤:
打开MDK,点菜单Tools -> Customize Tools Menu。

xft1jifmohj6404727715.png

xft1jifmohj6404727715.png

               
           
再新建一个"AStyle Batch",名字可以任意取。

i5u5p5vvvpt6404727816.png

i5u5p5vvvpt6404727816.png

           
           
新建工具:
Menu Text:随便填,比如“AStyle Batch”。
Command:填AStyle路径,我是放在D:\Keil_arm\astyle-3.6.6-x64\AStyle.exe目录下,这里要改成你存放的目录。
Arguments:输入*.c *.h --style=allman --recursive。
           
Initial Folder:填项目目录,我的工程文件是放在D:\wj03(V2.7),怎么快速指定当前目录路径的命令,我还没研究明白,试了几个不行,只能先用这种笨办法。
           
点OK保存。
               
最后点菜单Tools -> AStyle Batch,就可以把整个工程的代码批量排版了。

ef1vgif4hfa6404727916.png

ef1vgif4hfa6404727916.png

           
代码格式化对单片机开发很重要,MDK自带工具不够用,AStyle就能补这个短板。
           
初学者用它能快速把代码整理得像模像样,省下时间专注功能实现,配置简单,效果立竿见影,大家赶紧冲吧。

end

xs1qiauvdvt6404728016.jpg

xs1qiauvdvt6404728016.jpg


下面是更多无际原创的个人成长经历、行业经验、技术干货。
1.电子工程师是怎样的成长之路?10年5000字总结
2.如何快速看懂别人的代码和思维
3.单片机开发项目全局变量太多怎么管理?
4.C语言开发单片机为什么大多数都采用全局变量的形式
5.单片机怎么实现模块化编程?实用程度让人发指!
6.c语言回调函数的使用及实际作用详解

7.手把手教你c语言队列实现代码,通俗易懂超详细!

8.c语言指针用法详解,通俗易懂超详细!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表