- 🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)
- 🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd
- 🌐系列专栏:善假于物
- 📰如觉得博主文章写的不错或对你有所帮助的话,还望大家三连支持一下呀!!! 👉关注✨、点赞👍、收藏📂、评论。
- 如需转载请参考转载须知!!
- 良好统一的代码风格在多人协同开发中至关重要,不统一的代码风格会在代码版本管理中引入由于格式修改而带来的代码变更,使版本维护变得困难且容易出错。因此,在C语言开发过程中,经常需要对代码格式做些调整:
– 范围可能是针对某个函数、某个文件、或某个目录;
– 调整的内容,可能涉及Tab键、大括号、对齐等;- 如果纯手工处理,效率低,且容易出问题,本文将常见的C语言代码格式化工作做一整理汇总,供各位大侠参考。
代码格式化依据
一些文档
一些风格
- K&R风格,Kernighan和Ritchie共同完成C语言”白皮书《C Programing Language》;
- GUN风格,应用于GUN项目所开发的软件中;
- Allman风格,以Berkeley黑客Eric Allman之名命名,又被称作BSD风格,也叫Ansi风格;
- Whitesmiths风格,由Whitesmith C编译器而普及起来;
- Linux kernel style,Linux内核使用的风格。
本地工具
clang-format
- clang-format 是 LLVM 开发的用于格式化 C/C++/Java/JavaScript/Objective-C/Objective-C++/Protobuf 等多种语言代码的工具,借助 clang-format 可以实现代码仓库的风格统一,提升开发效率。
- ClangFormat链接
- 使用示例如下:
find <src-path> -type f \( -name '*.h' -or -name '*.hpp' -or -name '*.cpp' -or -name '*.c' -or -name '*.cc' \) -print | xargs clang-format -style=file --sort-includes -i
Astyle
- astyle不但可以对C/C++进行格式优化,还可以处理Java和C#。版本一直在保持更新,且开放源代码,可以自行编译或使用自带的发布版本。通过命令““astyle -V”可以查询版本信息。
- 下载链接AStyle
- 使用示例:
Astyle --style=allman --indent=spaces=4 --align-pointer=type --attach-closing-while --indent-col1-comments --pad-oper --pad-comma --pad-header --add-brackets --mode=c -i .\mytest.c
indent
- indent命令是老牌的格式化软件,可用于格式化C语言源文件,实现统一的代码风格。
- 下载链接如下:
indent for Windows
indent for Linux - Linux下也可通过命令安装。
- 使用示例:
indent –kr –i8 main.c 代码使用K&R风格,8个字节缩进
VSCode
- VSCode本身对代码的格式化功能比较弱,但如借助ms-vscode.cpptools(内置clang-format)、Astyle等插件,就完美了。
Cool Format
- 这是一款国人开发的开源的神器,支持图形化界面或者作为插件集成在IDE中,是一款C\C++\C#\CSS\HTML\Java\JavaScript\JSON\Objective-C\PHP\SQL\XML代码格式化工具。软件可以快速多种风格格式化,并对语言进行着色。界面采用Office 2010风格,并有多种样式可以替换。并且支持代码高亮到网页上显示,方便博客文章之类的撰写阅读。
- 支持快速单文件格式,选中部分格式化,或者文件夹多个文件批量格式化,代码风格可选ANSI、K&R、GNU等标准代码格式,也可以自定义代码风格。
- Cool Format
在线工具
- formatter,重点推荐一下,它可以支持多种格式转换;
- w3cschool版本
- jb51版本
- OSChina
- stackoverflow版本
- 友沃可在线工具
小结
- 如果只是小打小闹,用在线工具足以。但如果是在项目中应用,建议使用clang-format或Astyle,同时,可根据项目或公司的具体要求,基于这些工具,二次定制一些脚本,使用起来会非常酸爽。
如本文对你有些许帮助,欢迎大佬支持我一下,您的支持是我持续创作的不竭动力
支持我的方式