Clang-Format 可统一 C++ 代码风格,支持通过包管理器安装,生成 .clang-format 配置文件并选择或自定义格式规则,如 IndentWidth、ColumnLimit 等;可用于格式化单个或多个文件,结合 Git pre-commit 脚本自动格式化提交的代码,并与 VS Code、Vim、CLion 等编辑器集成,实现保存时自动格式化,提升团队协作效率和代码可读性。

在C++项目开发中,保持统一的代码风格对团队协作和代码维护至关重要。Clang-Format 是 LLVM 项目提供的一个强大工具,能够自动格式化 C++ 代码,帮助团队定义并强制执行一致的编码规范。
安装 Clang-Format
大多数系统可以通过包管理器安装 Clang-Format:
- Ubuntu/Debian:sudo apt install clang-format
- macOS(使用 Homebrew):brew install clang-format
- Windows:可通过 LLVM 官网下载安装包,或使用 vcpkg、Chocolatey 安装
安装完成后,可通过命令行验证版本:clang-format --version
配置 .clang-format 文件
Clang-Format 使用项目根目录下的 .clang-format 文件来定义格式规则。运行以下命令生成默认配置:
立即学习“C++免费学习笔记(深入)”;
clang-format -style=llvm -dump-config > .clang-format也可以选择内置样式之一:LLVM、Google、Chromium、Mozilla、WebKit。例如使用 Google 风格:
clang-format -style=google -dump-config > .clang-format你还可以自定义配置,例如:
BasedOnStyle: GoogleIndentWidth: 4
TabWidth: 4
UseTab: Never
ColumnLimit: 100
AllowShortIfStatementsOnASingleLine: false
PointerAlignment: Left
常用选项说明:
- IndentWidth:缩进空格数
- TabWidth:制表符显示宽度
- UseTab:是否使用 Tab(Never, ForIndent, Always)
- ColumnLimit:每行最大字符数
- PointerAlignment:指针符号对齐方式(Left: int* x)
- AllowShortIf/Functions/LoopsOnASingleLine:是否允许短语句单行书写
使用 Clang-Format 格式化代码
格式化单个文件:
clang-format -i src/main.cpp格式化多个文件:
find . -name "*.cpp" -o -name "*.h" | xargs clang-format -i预览格式化效果(不修改文件):
clang-format src/main.cpp与 Git 集成,在提交前自动格式化修改的文件,可在 .git/hooks/pre-commit 中添加脚本:
#!/bin/shfiles=$(git diff --cached --name-only --diff-filter=ACM | grep '\.cpp\|\.h$')
echo "$files" | xargs clang-format -i
git add $files
编辑器集成提升效率
主流编辑器都支持 Clang-Format 插件,保存时自动格式化:
- VS Code:安装 "C/C++" 扩展,启用 "C_Cpp.formatting": "clangFormat"
- Vim:使用 vim-clang-format 插件
- CLion:内置支持,设置中选择 Clang-Format 作为代码风格
启用后可在编辑器中快捷键触发格式化(如 VS Code 中 Ctrl+Shift+I),也可设为保存时自动执行。
基本上就这些。通过配置 .clang-format 文件并集成到开发流程中,可以有效统一 C++ 项目的代码风格,减少人工审查负担,提升代码可读性和协作效率。










