😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰发布时间⏰: 2025-07-04
本文未经允许,不得转发!!!
目录
🎄一、概述
博主日常使用的是C/C++语言写代码,留意到 vscode 有个 格式化文档 的功能,但是默认的功能并不好用,或者说直接格式化之后并不能达到自己想要的效果,例如:格式化之后,原本对齐的自定义宏会变成不对齐;对齐的变量定义也变成不对齐的等等。
盲猜这个功能肯定是可以设置的,经过搜索了解到可以通过设置 C/C++ 插件的Clang_format_style
来设置格式化文档的格式,下面章节演示如何在VScode设置clang-format
的以及需要注意的点。
🎄二、简单了解 Clang-format
clang-format
是一款代码格式化工具,可用于格式化 C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C#
代码。
在使用clang-format
命令行工具或代码中的clang::format::reformat(...)
函数时,可以选择预定义的样式(LLVM、Google、Chromium、Mozilla、WebKit、Microsoft
)之一,或者通过配置特定的样式选项来创建自定义样式。
clang-format
支持两种方式提供自定义样式选项:直接在 -style= 命令行选项中指定样式配置或使用 -style=file 并在项目目录中的 .clang-format
或 _clang-format
文件中放置样式配置。
.clang-format
文件采用 YAML 格式,它的设置格式可以参考官方文档:
1、Clang 21.0.0git documentation CLANG-FORMAT STYLE OPTIONS
2、Clang 21.0.0git documentation CLANGFORMAT
或者参考这篇文章:Clang-format格式化及配置参数。
Clang-format格式化及配置参数(效果展现):https://zed0.co.uk/clang-format-configurator/
下面是目前使用的 .clang-format
文件,将其复制后,保存到电脑:
---
# 编程语言:
Language: Cpp
# 基于哪种风格: LLVM|Google|Chromium|Mozilla|WebKit|Microsoft|GNU
BasedOnStyle: Google
# 圆括号之后,多行内容,进行对齐
AlignAfterOpenBracket: Align
# 对齐结构体数组
AlignArrayOfStructures: Right
# 连续赋值时,对齐所有等号
AlignConsecutiveAssignments: true
# 连续声明时,对齐所有声明的变量名
AlignConsecutiveDeclarations: true
# 连续宏定义时,对齐所有定义值
AlignConsecutiveMacros: AcrossEmptyLinesAndComments
# AlignOperands Align将对齐分割到多行上的单个表达式的操作数
AlignOperands: Align
# 对齐连续的尾随的注释
AlignTrailingComments: true
# 允许将一个函数声明的所有参数移到下一行.
AllowAllParametersOfDeclarationOnNextLine: false
# 将简单的语句块放到一个单行
AllowShortBlocksOnASingleLine: true
# if (a) return;放单行 属性:Never、WithoutElse没有else的可以放单行、OnlyFirstIf只有第一个if放单行、AllIfsAndElse总是把简短的if, else if和else语句放在同一行。
AllowShortIfStatementsOnASingleLine: Never
# BinPackArguments:如果为false,函数调用的参数要么全部在同一行,要么各有一行。
BinPackArguments: true
#BinPackParameters:如果为false,函数声明或函数定义的参数将全部在同一行或各有一行。
BinPackParameters: false
BreakBeforeBraces: Custom
# 控制单独的大括号换行事件,BraceWrapping 只有当BreakBeforeBraces设置为Custom时才有效
BraceWrapping:
# 使控制语句(if/for/while/switch/..)换行。
AfterControlStatement: true
# 使枚举定义换行。
AfterEnum: true
# 使函数定义换行。
AfterFunction: true
# 使结构定义换行。
AfterStruct: true
# 使共同体定义换行。
AfterUnion: true
# 对case后面的大括号换行
AfterCaseLabel: false
# 在else之前换行。
BeforeElse: true
# 在while之前换行
BeforeWhile: true
# 换行大括号缩进。
IndentBraces: false
# 空函数是否可以放在单行:flase允许 true不允许
SplitEmptyFunction: true
#空类,结构或联合主体是否可以放在单行:flase允许 true不允许
SplitEmptyRecord: true
#空namespace是否可以放在单行:flase允许 true不允许
SplitEmptyNamespace: true
SpaceBeforeParens: Custom
#控制圆括号前的单独空格,只有当SpaceBeforeParens设置为Custom时才有效
SpaceBeforeParensOptions:
#在控制语句关键字(for/if/while…)和开括号之间放置空格
AfterControlStatements: true
#在函数声明名称和开括号之间不允许使用空格
AfterFunctionDeclarationName: false
#指针对齐:右
PointerAlignment: Right
# 三元运算符将被放置在换行后
BreakBeforeTernaryOperators: true
# 每行字符的限制,0表示没有限制
ColumnLimit: 0
# 缩进空格宽度:4
IndentWidth: 4
# 保留在赋值操作符之前的空格
SpaceBeforeAssignmentOperators: true
# 不要排序include的头文件
SortIncludes: Never
# 允许重新排版注释
ReflowComments: true
# 尾行注释前的空格数
SpacesBeforeTrailingComments: 1
# 连续空行的最大数量
MaxEmptyLinesToKeep: 1
# 使用tab字符: Never从不使用, ForIndentation仅在缩进时使用制表符, ForContinuationAndIndentation, Always
UseTab: Never
# SpacesInParentheses如果为真(true), 将会在“(”之后和“)”之前插入空格。
SpacesInParentheses: false
# SpacesInSquareBrackets如果为真(true),将会在“[”之后和“]”之前插入空格。
SpacesInSquareBrackets: false
# 在多行字符串字面量时之前断行
AlwaysBreakBeforeMultilineStrings: false
🎄三、VScode 设置 Clang-format
✨3.1 确保安装了C/C++插件
首先,确保你的VScode软件已经安装了下图这个C/C++插件:
✨3.2 进入设置页面
在VScode左下角,按下图操作,或者直接按Ctrl+,
,进入设置页面
✨3.3 设置 .clang-format
文件路径
在设置页面,输入clang_format_style
,找到clang_format
格式设置,然后将上个小节保存的.clang_format
文件路径复制到对应输入框。下面是我的路径,注意路径前有个file:
file:C:\Users\Administrator\AppData\Roaming\Code\User\.clang-format
✨3.4 设置“保存时自动格式化”
如果你把 文档格式化 的效果调到了自己满意了,想每次保存时都自动格式化,那么可以按下图设置:
在设置页面输入format on save
,然后勾选下图②的Format On Save
选项。设置好,每次保存文件时都会自动格式化。
🎄四、总结
👉本文介绍了VScode针对C/C++语言进行代码格式化的功能,介绍了 clang-format 功能,以及设置 VScode 的 clang-format 配置。
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁
参考:
clang-format的介绍和使用:https://www.cnblogs.com/tudou/p/13322854.html
Clang 21.0.0git documentation:https://clang.llvm.org/docs/ClangFormat.html
VScode使用clang format文档自动代码格式化(C语言):https://blog.csdn.net/weixin_42217191/article/details/129516325
VSCode + clang-format:https://blog.csdn.net/q441990439/article/details/131909415
Clang-format格式化及配置参数:https://blog.csdn.net/Once_day/article/details/127761573