当前位置: 首页 > news >正文

【VScode | 格式化文档】一文掌握VScode使用 clang-format 的文档格式化(C/C++)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰发布时间⏰: 2025-07-04

本文未经允许,不得转发!!!

目录

  • 🎄一、概述
  • 🎄二、简单了解 Clang-format
  • 🎄三、VScode 设置 Clang-format
    • ✨3.1 确保安装了C/C++插件
    • ✨3.2 进入设置页面
    • ✨3.3 设置 `.clang-format` 文件路径
    • ✨3.4 设置“保存时自动格式化”
  • 🎄四、总结


在这里插入图片描述
在这里插入图片描述

🎄一、概述

博主日常使用的是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: falseBreakBeforeBraces: 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: trueSpaceBeforeParens: 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

http://www.dtcms.com/a/266279.html

相关文章:

  • 文心大模型及百度大模型内容安全平台齐获信通院大模型安全认证
  • 微信小程序如何实现再多个页面共享数据
  • 机器学习中的数学---常用距离计算方法详解
  • 通过 Ansys Discovery CFD 仿真探索电池冷板概念
  • 睿尔曼系列机器人——以创新驱动未来,重塑智能协作新生态(下)
  • 【IM项目笔记】1、WebSocket协议和服务端推送Web方案
  • 在 Ubuntu 22.04 上使用 Minikube 部署 Go 应用到 Kubernetes
  • 商品中心—19.库存分桶高并发的优化文档
  • element-plus按需自动导入的配置 以及icon图标不显示的问题解决
  • Ubuntu 22.04 + MySQL 8 无密码登录问题与 root 密码重置指南
  • ubuntu22桌面版中文输入法 fcitx5
  • goole chrome变更默认搜索引擎为百度
  • MySQL(116)如何监控负载均衡状态?
  • 如何调节笔记本电脑亮度?其实有很多种方式可以调整亮度
  • Linux中容器文件操作和数据卷使用以及目录挂载
  • Oracle CTE递归实现PCB行业的叠层关系
  • 缓存雪崩、穿透、预热、更新与降级问题与实战解决方案
  • 【网络】Linux 内核优化实战 - net.core.flow_limit_table_len
  • 批量剪辑混剪系统源码搭建与定制化开发:支持OEM
  • LeetCode1456. 定长子串中元音的最大数目
  • Acrel-1000系列分布式光伏监控系统在湖北荆门一马光彩大市场屋顶光伏发电项目中应用
  • 在数学中一个实对称矩阵的特性分析
  • 每天一个前端小知识 Day 21 - 浏览器兼容性与 Polyfill 策略
  • Web 项目如何自动化测试?
  • 大语言模型预训练数据——数据采样方法介绍以GPT3为例
  • 银河麒麟V10服务器版 + openGuass + JDK +Tomcat
  • 基于FPGA的一维序列三次样条插值算法verilog实现,包含testbench
  • 类图+案例+代码详解:软件设计模式----原型模式
  • 【网络与系统安全】域类实施模型DTE
  • 【AI总结】Git vs GitHub vs GitLab:深度解析三者联系与核心区别