无际单片机编程 发表于 6 天前

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

关注公众号,回复“入门资料”获取单片机入门到高级开挂教程
开发板带你入门,我们带你飞

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

代码格式化以后的效果:   

是不是瞬间专业清晰多了?
         
为什么代码格式化是个问题?
         
先说说为啥代码格式化会让人抓狂,特别是单片机开发:
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。

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

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

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保存。   

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

         
然后菜单里选“Format Code”。

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

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

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

         
         
新建工具:
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,就可以把整个工程的代码批量排版了。

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

end


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

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

8.c语言指针用法详解,通俗易懂超详细!
页: [1]
查看完整版本: 如何3秒搞定MDK工程全部代码的格式化?