😁博客主頁😁:🚀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