😁博客主页😁:🚀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.pswp.cn/pingmian/87416.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87416.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/87416.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vs code远程自动登录服务器,无需手动输入密码的终极方案(windows版)

目录 步骤1:本地生成 SSH 密钥对(如果尚未生成)步骤2:将公钥复制到远程服务器步骤3:配置 SSH Agent 自动启动1. 检查是否已安装 OpenSSH2. 编辑 .bashrc 或 .profile 文件3. 将私钥添加到 SSH Agent4. 验证配置 步骤4&…

7.redis对象介绍(三)

1.类型检查与命令多态 redis中用于操作键的命令可以分为两种,一种是可以对任何类型的键执行的命令,比如del,expire,rename,type,object等;另一种是只能对特定类型的键执行,比如set&…

VsCode 配置 C/C++ 开发环境

简述一下步骤哈: 下载VsCode(这点大家都会哈)下载MingG64(C/C编译器【gcc】),配置环境变量在VsCode配置一下C/C运行时环境测试运行 1、准备MingG64 VsCode 本身是没有C/C编译的,这里我们自己…

用C#编写一个读取磁盘第一扇区的程序

1.运行结果 2.WinHex校验 3.程序 using System; using System.IO;class Program {static void Main(){try{// 以管理员权限运行此程序const string drivePath "\\.\G:";const int sectorSize 512; // 标准扇区大小// 打开逻辑驱动器(需要管理员权限&a…

【PyTorch】PyTorch预训练模型缓存位置迁移,也可拓展应用于其他文件的迁移

目录 前言: 一、具体实现: 二、关键技术解析 路径动态拼接 安全目录创建 环境变量魔法 迁移条件检查 三、代码实现: 前言: 当模型文件下载到本地c盘的默认路径时,可用以下代码的形式进行文件位置的迁移。 一、…

Python 机器学习核心入门与实战进阶 Day 2 - KNN(K-近邻算法)分类实战与调参

✅ 今日目标 理解 KNN 的原理与“以邻为近”的思想掌握 K 值选择与模型效果的关系学会使用 sklearn 训练 KNN 模型实现 KNN 分类 模型评估 超参数调优 📘 一、KNN 算法原理 KNN(K-Nearest Neighbors)核心思想: 给定一个待预测…

pppoe宽带连接-系列命令调用

以下是对PPPoE相关命令的详细解释及用法说明: 1. pppoe 功能:PPPoE基础工具集,通常作为其他命令的底层依赖。 用法:一般不直接使用,而是通过pppoe-*系列命令调用。 2. pppoe-connect 功能:建立PPPoE连接…

C# 合并两个byte数组的几种方法

1. 使用 Array.Copy 方法(高效推荐)byte[] array1 { 1, 2, 3 }; byte[] array2 { 4, 5, 6 };byte[] combined new byte[array1.Length array2.Length]; Array.Copy(array1, 0, combined, 0, array1.Length); Array.Copy(array2, 0, combined, array1…

Spring AI 源码

目录 Spring AI 介绍 Spring AI 组件介绍 Spring AI 结构化输出 Srping AI 多模态 Spring AI 本地Ollama Spring AI 源码 Spring AI Advisor机制 Spring AI Tool Calling Spring AI MCP Spring AI RAG Spring AI Agent Spring AI 是一个用于 AI 工程的应用程序框架。 其目标是…

钉钉企业应用开发系列:前端实现自定义右上角菜单(dd.http + Vue3)

本文将围绕“如何在钉钉企业应用中自定义右上角菜单”这一主题进行讲解,并结合现代前端技术栈(Vue3 Composition API)展示完整实现过程,帮助你快速构建具备原生交互体验的企业应用。一、前置准备1. 注册钉钉开发者账号并创建应用…

STC8H驱动两相四线步进电机

两相步进电机, STC8H系列 用高级PWM实现SPWM细分驱动 /************* 功能说明 ************** 用B组高级PWM细分驱动2相4线小型步进电机, 支持1、2、4、8、16、32、64细分, 比如1.8度的电机4细分到0.45度. 本程序用于演示SPWM多细分直接驱动2相4线小型步进电机…

读书笔记:《DevOps实践指南》

《DevOps实践指南》 美 Gene Kim, Jez Humble, Patrick Debois, John Willis 著;刘征,王磊,马博文,曾朝京 译 个人理解: 向客户交付价值,快速、高效、高质量交付 信息全流程共享、全过程参与、关注软件…

创客匠人视角:创始人 IP 从流量狂欢到价值深耕的蜕变之路

在知识付费行业浪潮中,创客匠人深耕九年,见证了无数 “一夜爆红” 与 “迅速陨落” 的案例。从 “菏泽树哥” 的流量泡沫,到天水麻辣烫的短暂热度,这些现象折射出行业发展的阶段性特征,也促使创始人 IP 打造的底层逻辑…

ArchLinux:别样的btrfs log tree修复大赛(errno=-5 IO failure Failed to recover log tree)

archlinux 简明指南本指南包含 archlinux 安装、配置、维护等,帮助新手快速上手https://arch.icekylin.online/一个月黑风高的上午:美滋滋的打开电脑进grub选择arch启动 欸!突然就卡在这里了,系统进了rootfs,并且长按电…

Laravel8中使用phpword生成word文档

最近在开发有关考试试卷相关的内容,需要生成试卷的word文档并下载。 这里用到了phpoffice/phpword插件,这里记录下一些开发过程中注意的点。 1.安装phpoffice/phpword composer require phpoffice/phpword2.准备一个word模板方便向其中写入需要生成的内容…

spring-ai-alibaba官方 Playground 示例

1、Spring AI Alibaba 官方社区开发了一个包含完整 “前端UI后端实现” 的智能体 Playground 示例,示例使用 Spring AI Alibaba 开发,可以体验聊天机器人、多轮对话、图片生成、多模态、工具调用、MCP集成、RAG知识库等所有框架核心能力。 2、界面 3、准…

k8s pod深度理解

一、理论 pod等同于逻辑主机,在它上面运行各种程序(容器) pod的pause容器作用,pod网络、存储 所有容器的父容器,负责回收僵尸容器,同时它为pod中的容器提供了统一的网络及统一的共享存储。 pod的endpoint…

Android Auto即将带来变革

在2025年谷歌I/O开发者大会上,Android Auto迎来重磅升级。除了集成Gemini智能助手外,本次更新还突破性地为车载信息娱乐系统新增了浏览器和视频应用支持。值得注意的是,Spotify应用也将获得一系列创新功能,进一步丰富用户的驾驶体…

Jenkins 与 GitLab CI/CD 的核心对比

Jenkins 与 GitLab CI/CD 的核心对比及中小企业选型建议如下: 🔄 ‌核心功能对比‌ ‌维度‌‌Jenkins‌‌GitLab CI/CD‌‌集成性‌需手动配置插件对接代码仓库(如 GitLab)原生深度集成 GitLab 仓库,实现代码-CI/CD …

每日问题总结

fairy GUI适配相关问题 为什么自己适配好了但是打包发布到unity没有UI显示呢? 原因可能是你发布的组件和图片不在同一个包下面,因为fairyGUI的分包限制问题,每一个包限制在2048M大小。不能超过这个大小,所以说,有可能…