本文转自公众号,欢迎关注
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
+关注
关注
4文章
207浏览量
32005
发布评论请先 登录
相关推荐
评论