【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.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大小。不能超過這個大小,所以說,有可能…