Clang-format可统一c++代码风格,支持多平台安装与配置文件定义格式规则,通过命令行或编辑器插件实现自动格式化,并能结合git预提交钩子确保提交代码符合规范。

使用 Clang-Format 可以让 C++ 项目中的代码风格保持一致,减少人工调整格式的时间。它是一个基于 LLVM 的工具,支持通过配置文件定义代码格式规则,并能自动格式化源码。
安装 Clang-Format
在不同系统上安装方式略有不同:
- ubuntu/debian:运行
sudo apt install clang-format - macOS:使用 Homebrew 执行
brew install clang-format - windows:可通过 LLVM 官网下载安装包,或使用 vcpkg、choco 等工具安装
安装完成后,可通过命令行输入 clang-format --version 验证是否成功。
生成配置文件
Clang-Format 使用 .clang-format 文件来定义格式规则。可以在项目根目录创建该文件,控制整个项目的格式化行为。
立即学习“C++免费学习笔记(深入)”;
生成默认配置的方法:
- 运行
clang-format -style=google -dump-config > .clang-format可导出 google 风格的配置 - 也可使用内置样式:
LLVM、Google、Chromium、Mozilla、webkit
常见配置项包括缩进宽度、换行策略、括号位置等。例如:
<font face="Courier New"> BasedOnStyle: Google IndentWidth: 4 ColumnLimit: 100 AlignAfterOpenBracket: Align </font>
手动格式化单个或多个文件
可以直接在终端中调用 clang-format 格式化指定文件:
- 查看格式化效果(不修改文件):
clang-format main.cpp - 直接修改文件:
clang-format -i main.cpp - 格式化多个文件:
clang-format -i src/*.cpp include/*.h
若想递归处理整个目录,可结合 find 使用:
find . -name "*.cpp" -o -name "*.h" | xargs clang-format -i
集成到编辑器或 ide
大多数现代编辑器都支持 Clang-Format 插件,保存时自动格式化:
- VS Code:安装 “C/C++” 插件,启用
C_Cpp.formatting为clangFormat,可在保存时自动格式化 - vim:配合
vim-clang-format插件,绑定快捷键执行格式化 - CLion:设置外部工具指向 clang-format,或使用内置支持
- sublime Text:通过 Package Control 安装 Clang Format 插件
配置后,通常可以通过快捷键或“格式化文档”菜单触发。
结合 Git 使用预提交检查
防止未格式化的代码被提交,可以设置 Git 钩子(pre-commit)自动检查并格式化改动文件:
在项目中创建脚本 .git/hooks/pre-commit:
<font face="Courier New"> #!/bin/sh files=$(git diff --cached --name-only --diff-filter=ACM | grep '.cpp|.h$') for file in $files; do clang-format -i "$file" git add "$file" done </font>
赋予执行权限:chmod +x .git/hooks/pre-commit,这样每次提交都会自动格式化 C++ 文件。
基本上就这些。只要配置一次 .clang-format 并集成到开发流程中,团队成员就能共享统一的代码风格,减少代码审查中的格式争议。


