KEIL-MDK快速格式化代码的方法

本文介绍了如何利用Astyle工具对keil(MDK)代码进行格式化,解决因编辑器差异导致的缩进混乱问题。通过下载Astyle并设置keil的外部工具,可以一键将代码格式化为ansi风格,提高代码可读性。此外,还讲解了Astyle的部分参数含义,并提供了设置快捷键的方法,以实现快速格式化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

使用 keil(MDK) 的代码编辑器编辑时,每次都是手动调整格式,这样既麻烦又容易格式不统一,实在不能忍受,所以我们就介绍一个叫做 Astyle 的神奇工具,它可以方便的将程序代码格式化成自己想要的样式而不必人工修改。

Astyle 简介

Astyle 即Artistic Style,是一个可用于C, C++, C++/CLI, Objective‑C, C# 和Java编程语言格式化和美化的开源工具。我们在使用编辑器的缩进(TAB)功能时,由于不同编辑器的差别,有的插入的是制表符,有的是2个空格,有的是4个空格。这样如果别人用另一个编辑器来阅读程序时,可能会由于缩进的不同,导致阅读效果一团糟。为了解决这个问题,使用C++开发了一个插件,它可以自动重新缩进,并手动指定空格的数量,自动格式化源文件。它是可以通过命令行使用,也可以作为插件,在其他IDE中使用。你可以在项目地址下载可执行文件,也可以下载源码执行编译成可执行文件。

在keil(MDK)中以插件的形式加载 Astyle

  1. Astyle官网 下载最新编译好的Astyle(以 AStyle_3.1_windows.zip 为例)。
  2. 下载完成后,解压到一个常用目录下,例如:

D:\Program Files (x86)\AStyle

  1. 打开 keil(MDK) ,选择 Tools->Customize Tools Menu,自定义外部工具菜单
  2. 点击新建按钮,输入工具名称:Astyle Current File,
    Command命令选项,指定AStyle.exe的路径(例如: D:\Program Files (x86)\AStyle\bin\AStyle.exe),
    Argument选项输入以下参数:

-pnUk1s4 --style=ansi !E

PS:注意大小写,建议复制粘贴,不会出错。
配置插件
5. 无论你的代码写的有多乱,只要点击 Tools->Astyle Current File 工具,你就会发现代码一下子变得美观了许多,快来试试吧!
代码格式化前后对比

AStyle插件参数详解

AStyle插件的参数实在太多了,这里只介绍我们上面那个命令中用到的参数。

-pnUk1s4 !E --style=ansi

命令参数详解:

参数名大小写说明
p小写只在操作符两边加空格
P大写在操作符和括号两边都加空格
n小写不备份格式化之前的文件,后缀为.orig,默认备份
U大写移除括号两边不必要的空格
d小写只在括号外面插入空格
D大写只在括号里面插入空格
k1命令指针或引用运算符*/&/^号靠近类型名
k2命令指针或引用运算符*/&/^号在类型名和变量名中间
k3命令指针或引用运算符*/&/^号靠近变量名
s4命令TAB键替换为4个空格
xC80命令一行最大字符数,超过后会在运算符处换行
H大写在关键字’if’,‘for’, 'while’之后添加空格
S大写switch 与case不同列,case缩进
K大写缩进case下面的语句
F大写空行分隔无关块
x小写删除多余空行
–style=ansi命令指定程序风格,如kr/linu/gnu等等

更多、更详细的参数说明可以查看自带的帮助文档。

定义一个快捷键来执行代码的快速格式化

为了更方便,我们还可以自定义一个快捷键,来执行这个命令。点击工具栏最右边的配置图标,切换到Shortcut Keys选项,选择Tools:Astyle Current File,点击Create Shortcut创建新的快捷键,在弹出的窗口按下你要设置的快捷键,然后保存退出就可以了,下次需要使用的时候,只要按下相对应的快捷键,就可以一键将当前文件格式化。
快捷键创建

05-30
C++中的堆是一种基于完全二叉树的数据结构,常用于实现优先队列等需要动态管理元素优先级的场景。 C++中的堆分为最大堆和最小堆两种,最大堆的根节点是堆中最大的元素,最小堆的根节点是堆中最小的元素。堆中的每个节点都比它的子节点大(最大堆)或小(最小堆)。 C++中可以使用STL中的priority_queue来实现堆。priority_queue是一个模板类,使用需要指定元素类型和比较函数。比较函数可以使用lambda表达式、函数指针等方式进行定义,用于对元素进行比较,以确定元素的优先级。 以下是priority_queue的一些常用操作: 1. push(element):将元素加入堆中。 2. top():返回堆顶元素。 3. pop():弹出堆顶元素。 4. size():返回堆中元素个数。 5. empty():检查堆是否为空。 以下是使用最大堆实现的一个示例代码: ```c++ #include <iostream> #include <queue> using namespace std; int main() { priority_queue<int> maxHeap; // push元素 maxHeap.push(3); maxHeap.push(1); maxHeap.push(4); maxHeap.push(1); maxHeap.push(5); // 访问堆顶元素 cout << maxHeap.top() << endl; // 输出5 // 弹出堆顶元素 maxHeap.pop(); cout << maxHeap.top() << endl; // 输出4 // 输出堆中元素个数 cout << maxHeap.size() << endl; // 输出4 // 检查堆是否为空 cout << maxHeap.empty() << endl; // 输出0 return 0; } ``` 输出结果为: ``` 5 4 4 0 ``` 需要注意的是,priority_queue实现的是最大堆,如果需要实现最小堆,需要自定义比较函数并在priority_queue中传入。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荻夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值