【码农日常】vscode编码clang-format格式化简易教程
文章目录0 前言1 工具准备1.1 插件准备1.2 添加.clang-format1.3 添加配置1.4 格式化工具配置2 快速上手0 前言各路大神都说clangd好我也来试试。这篇主要讲格式化部分。1 工具准备1.1 插件准备照图安装。1.2 添加.clang-format右键添加文件跟添加个.h或者.c文件一样。1.3 添加配置点进.clang-format添加如下内容英语好的看字面意思不好的让AI给翻译翻译动手试试修改效果。不一一赘述。---Language:Cpp BasedOnStyle:Google #访问声明符缩进 AccessModifierOffset:-4# 开括号后的对齐(包括小括号/大括号/尖括号),建议使用Align #-Align:对于开括号,即在换行情况下,换行的参数跟开括号对齐,建议使用 #-DontAlign:不对于开括号,即换行时使用配置的空格数 #-AlwaysBreak:永远换行,即第一个参数都不允许粘连括号,会强制换行,换行后使用配置空格数对齐 #-BlockIndent:同AlwaysBreak,多了一个操作:如果参数不固定在同一行,闭括号将在下一行 AlignAfterOpenBracket:AlwaysBreak #-结构休数组统一初始化对齐,建议不配置,没过多必要,详见clang-format doc #-None:不做处理,即保留开发者的代码 #-Left:左对齐 #-Right:右对齐 AlignArrayOfStructures:None # 连续赋值语句的对齐即多个赋值语句连续出现时的对齐策略配置,包含多个子配置项 AlignConsecutiveAssignments:# 是否启用,建议不启用 Enabled:false # 是否跨过空行,即多个对齐语句中间有空行时,是否跨过,如果要开启连续赋值语句的配置,建议为false AcrossEmptyLines:false # 是否跨过注释,建议false AcrossComments:false # 是否跨过复合语句(包括空行及注释),建议False AlignCompound:false AlignFunctionPointers:false # 是否(右)对齐赋值操作的操作符,建议true PadOperators:true # 同AlignConsecutiveAssignments,表示连续位定义语句出现时,是否需要对齐:符号,位变量定义用得少,可以不开启 AlignConsecutiveBitFields:Enabled:false AcrossEmptyLines:false AcrossComments:false AlignCompound:false AlignFunctionPointers:false PadOperators:false AlignConsecutiveDeclarations:Enabled:false AcrossEmptyLines:false AcrossComments:false AlignCompound:false AlignFunctionPointers:false PadOperators:false # 宏定义自动对齐 AlignConsecutiveMacros:Enabled:true AcrossEmptyLines:false AcrossComments:false AlignCompound:false AlignFunctionPointers:false PadOperators:false AlignConsecutiveShortCaseStatements:Enabled:false AcrossEmptyLines:false AcrossComments:false AlignCaseColons:false # 续行符(\\)对齐:#-DontAlign:不做操作 #-Left:尽可能向左对齐,即最长一行代码为准 #-Right:跟开发都写的最远的\\对齐(即不会自动缩减你的空格),建议使用这个 AlignEscapedNewlines:Right AlignOperands:Align AlignTrailingComments:Kind:Always OverEmptyLines:0AllowAllArgumentsOnNextLine:true AllowAllParametersOfDeclarationOnNextLine:true AllowBreakBeforeNoexceptSpecifier:Never AllowShortBlocksOnASingleLine:Never AllowShortCaseLabelsOnASingleLine:false AllowShortCompoundRequirementOnASingleLine:true AllowShortEnumsOnASingleLine:true AllowShortFunctionsOnASingleLine:All AllowShortIfStatementsOnASingleLine:Never AllowShortLambdasOnASingleLine:All AllowShortLoopsOnASingleLine:false AlwaysBreakAfterDefinitionReturnType:None AlwaysBreakAfterReturnType:None AlwaysBreakBeforeMultilineStrings:false AlwaysBreakTemplateDeclarations:MultiLine AttributeMacros:-__capability BinPackArguments:true BinPackParameters:true # 位定义:前后是否增加空格,可选:#-Both:前后都添加 #-Before:只在前增加 #-After:只在后增加 #-None:不增加,建议,没有必要因为过多的space(s)影响代码紧凑 BitFieldColonSpacing:None # 大括号换行 BraceWrapping:# 在case后的大括号是否换行 AfterCaseLabel:true#class后AfterClass:true # 控制语句(if/for/while/switch/...)后是否换行 #-Never:永远不,即永远将语句体的大括号放置于控制语句同一行 #-MultiLine:多行控制语句才进行换行 #-Always:永远换行,建议 AfterControlStatement:Always AfterEnum:true AfterExternBlock:false AfterFunction:true AfterNamespace:false AfterObjCDeclaration:false AfterStruct:true AfterUnion:true BeforeCatch:false BeforeElse:true BeforeLambdaBody:false BeforeWhile:true IndentBraces:false SplitEmptyFunction:true SplitEmptyRecord:true SplitEmptyNamespace:true BreakAdjacentStringLiterals:true BreakAfterAttributes:Leave BreakAfterJavaFieldAnnotations:false BreakArrays:true BreakBeforeBinaryOperators:None BreakBeforeConceptDeclarations:Always # 大括号换行风格,Custom即可,具体值可参考上方文档 BreakBeforeBraces:Custom BreakBeforeInlineASMColon:OnlyMultiline BreakBeforeTernaryOperators:true BreakConstructorInitializers:BeforeColon BreakInheritanceList:BeforeColon BreakStringLiterals:true ColumnLimit:150CommentPragmas:^ IWYU pragma:CompactNamespaces:false ConstructorInitializerIndentWidth:4ContinuationIndentWidth:4#C11的统一初始化列表大括号风格,建议trueCpp11BracedListStyle:true DerivePointerAlignment:false DisableFormat:false EmptyLineAfterAccessModifier:Never EmptyLineBeforeAccessModifier:LogicalBlock ExperimentalAutoDetectBinPacking:false FixNamespaceComments:true ForEachMacros:-foreach-Q_FOREACH-BOOST_FOREACH IfMacros:-KJ_IF_MAYBE#include代码块操作,前提是SortIncludes开启:#-Preserve:只对每个代码块排序 #-Merge:对所有代码块合并,并在合并后排序 #-Regroup:对所有include块进行分析,并重新分块,不建议!IncludeBlocks:Preserve IncludeCategories:-Regex:^(llvm|llvm-c|clang|clang-c)/Priority:2SortPriority:0CaseSensitive:false-Regex:^(|(gtest|gmock|isl|json)/)Priority:3SortPriority:0CaseSensitive:false-Regex:.*Priority:1SortPriority:0CaseSensitive:false IncludeIsMainRegex:(Test)?$IncludeIsMainSourceRegex:IndentAccessModifiers:false IndentCaseBlocks:false IndentCaseLabels:false IndentExternBlock:AfterExternBlock IndentGotoLabels:true IndentPPDirectives:None IndentRequiresClause:true IndentWidth:4IndentWrappedFunctionNames:false InsertBraces:false InsertNewlineAtEOF:false InsertTrailingCommas:None IntegerLiteralSeparator:Binary:0BinaryMinDigits:0Decimal:0DecimalMinDigits:0Hex:0HexMinDigits:0JavaScriptQuotes:Leave JavaScriptWrapImports:true KeepEmptyLinesAtTheStartOfBlocks:true KeepEmptyLinesAtEOF:false LambdaBodyIndentation:Signature LineEnding:DeriveLF MacroBlockBegin:MacroBlockEnd:MaxEmptyLinesToKeep:1NamespaceIndentation:None ObjCBinPackProtocolList:Auto ObjCBlockIndentWidth:2ObjCBreakBeforeNestedBlockParam:true ObjCSpaceAfterProperty:false ObjCSpaceBeforeProtocolList:true # 是否打包构造函数初始化列表,建议Never,可选:#-Never:永远不做操作,即一个参数一行 #-BinPack:两个参数一行 #-CurrentLine:所有参数放置于一行,如果放不下,就一个参数一行 #-NextLine:同CurrentLine有点像,唯一不同就是如果放不行,将剩余参数放置于下一行(即不自动一参一行)PackConstructorInitializers:NextLine PenaltyBreakAssignment:2PenaltyBreakBeforeFirstCallParameter:19PenaltyBreakComment:300PenaltyBreakFirstLessLess:120PenaltyBreakOpenParenthesis:0PenaltyBreakScopeResolution:500PenaltyBreakString:1000PenaltyBreakTemplateDeclaration:10PenaltyExcessCharacter:1000000PenaltyIndentedWhitespace:0PenaltyReturnTypeOnItsOwnLine:60# 指针对齐,建议Right PointerAlignment:Right PPIndentWidth:-1QualifierAlignment:Leave ReferenceAlignment:Pointer # 是否允许clang-format尝试重新粘合注释(true/false),不建议使用 ReflowComments:false RemoveBracesLLVM:false RemoveParentheses:Leave RemoveSemicolon:false # 模板中的require语句位置,建议OwnLine RequiresClausePosition:OwnLine RequiresExpressionIndentation:OuterScope # 分隔不同定义块,建议Always,可选:#-Leave-不处理,建议,即由业务决定,也可以使用Always #-Always-永远进行分隔 #-Never:永远 不进行,不建议 SeparateDefinitionBlocks:Leave ShortNamespaceLines:1SkipMacroDefinitionBody:false SortIncludes:CaseSensitive SortJavaStaticImport:Before SortUsingDeclarations:LexicographicNumeric SpaceAfterCStyleCast:false SpaceAfterLogicalNot:false SpaceAfterTemplateKeyword:true SpaceAroundPointerQualifiers:Default SpaceBeforeAssignmentOperators:true SpaceBeforeCaseColon:false SpaceBeforeCpp11BracedList:false SpaceBeforeCtorInitializerColon:true SpaceBeforeInheritanceColon:true SpaceBeforeJsonColon:false SpaceBeforeParens:ControlStatements SpaceBeforeParensOptions:AfterControlStatements:true AfterForeachMacros:true AfterFunctionDefinitionName:false AfterFunctionDeclarationName:false AfterIfMacros:true AfterOverloadedOperator:false AfterPlacementOperator:true AfterRequiresInClause:false AfterRequiresInExpression:false BeforeNonEmptyParentheses:false SpaceBeforeRangeBasedForLoopColon:true SpaceBeforeSquareBrackets:false SpaceInEmptyBlock:false SpacesBeforeTrailingComments:1SpacesInAngles:Never SpacesInContainerLiterals:true SpacesInLineCommentPrefix:Minimum:1Maximum:-1SpacesInParens:Never SpacesInParensOptions:InCStyleCasts:false InConditionalStatements:false InEmptyParentheses:false Other:false SpacesInSquareBrackets:false Standard:Latest StatementAttributeLikeMacros:-Q_EMIT StatementMacros:-Q_UNUSED-QT_REQUIRE_VERSION TabWidth:8UseTab:Never VerilogBreakBetweenInstancePorts:true WhitespaceSensitiveMacros:-BOOST_PP_STRINGIZE-CF_SWIFT_NAME-NS_SWIFT_NAME-PP_STRINGIZE-STRINGIZE...1.4 格式化工具配置在settings.json中添加如下内容// 字符集编码选择“files.encoding”: “utf8”,// 自动保存任意文件“files.autoSave”: “afterDelay”,// 开启 material icons“workbench.iconTheme”: “vs-seti”,// theme主题设置“workbench.colorTheme”: “Dark Modern”,//粘贴时格式化代码“editor.formatOnPaste”: true,//保存时格式化代码“editor.formatOnSave”: true,//设置字体的大小最小值能设置为6“editor.fontSize”: 15,//设置字体的粗细// “editor.fontWeight”: “500”,“editor.fontWeight”: “normal”,//禁用字体可变属性“editor.fontVariations”: false,//设置字体的样式// “terminal.integrated.fontFamily”:“Courier New”,//使用Ctrl滚轮缩放编辑区的字体大小“editor.mouseWheelZoom”: true,//默认格式化工具clangd“editor.defaultFormatter”: “llvm-vs-code-extensions.vscode-clangd”,2 快速上手快捷键 alt shift F。Done

相关新闻

路由策略在双点双向路由重发布的应用

路由策略在双点双向路由重发布的应用

一、背景叙述路由重发布通常是解决两个不同路由协议之间的互通问题,也就是路由双向引入。有时候,单点路由重发布在大规模网络中压力较大,缺乏冗余性,于是就有了双点双向路由重发布问题:但是双点双向路由重发布也会引发…

2026/7/6 20:27:17阅读更多 →
AMP by Example视频集成指南:在AMP中嵌入YouTube、Vimeo等视频的完整教程

AMP by Example视频集成指南:在AMP中嵌入YouTube、Vimeo等视频的完整教程

AMP by Example视频集成指南:在AMP中嵌入YouTube、Vimeo等视频的完整教程 【免费下载链接】amp-by-example DEPRECATED: AMP by Example has been merged into amp.dev 项目地址: https://gitcode.com/gh_mirrors/am/amp-by-example 想要在AMP页面中高效嵌入…

2026/7/6 20:27:17阅读更多 →
VBrowser-Android:全网视频缓存神器的终极使用指南

VBrowser-Android:全网视频缓存神器的终极使用指南

VBrowser-Android:全网视频缓存神器的终极使用指南 【免费下载链接】VBrowser-Android 全网视频嗅探缓存APP 项目地址: https://gitcode.com/gh_mirrors/vb/VBrowser-Android 在移动互联网时代,网络不稳定和流量限制常常成为视频观看的阻碍。VBro…

2026/7/6 20:27:17阅读更多 →
2026年7月宁波小程序开发公司哪家好?定制开发推荐与排行参考

2026年7月宁波小程序开发公司哪家好?定制开发推荐与排行参考

宁波企业做小程序,常见的需求集中在贸易、供应链、仓储查询、经销商订货、客户管理和售后服务。不同客户的价格、区域权限、库存信息、发货状态和订单审核很容易让小程序变成“只能看不能管”的工具。。 小程序开发不是把电脑端内容缩到手机里。真正的难点是&#x…

2026/7/6 23:47:40阅读更多 →
Flowable 工作流镜像瘦身 3 步:从 500MB 到 150MB 的 Dockerfile 优化

Flowable 工作流镜像瘦身 3 步:从 500MB 到 150MB 的 Dockerfile 优化

Flowable 工作流镜像瘦身实战:从 500MB 到 150MB 的 Dockerfile 优化指南当企业级应用采用 SpringBoot 集成 Flowable 工作流引擎时,Docker 镜像体积往往成为影响部署效率的关键瓶颈。本文将揭示如何通过三阶段优化策略,将典型 500MB 的臃肿镜…

2026/7/6 23:47:40阅读更多 →
无常与耕耘-时间因果观的生命哲学阐释

无常与耕耘-时间因果观的生命哲学阐释

无常与耕耘:时间因果观下的生命修行 NO.49因为时间流逝,无常最是寻常;因为因果不虚,无常也最是公平。一切回报都藏在时间流逝中,没有哪一刹那的善念善行是不作数的。它们都将在未来某个时刻,开出安乐的花。…

2026/7/6 23:47:40阅读更多 →
5分钟掌握企业级SSO:用python-saml实现SAML 2.0单点登录

5分钟掌握企业级SSO:用python-saml实现SAML 2.0单点登录

1. 项目概述:为什么企业级SSO值得你花5分钟?如果你正在开发一个面向企业客户的应用,或者你的内部系统需要集成多个服务,那么“单点登录”这四个字你一定不陌生。想象一下,员工每天要登录邮箱、CRM、ERP、项目管理工具等…

2026/7/6 23:47:40阅读更多 →
TPOT自动化机器学习:基于遗传编程的可解释pipeline优化

TPOT自动化机器学习:基于遗传编程的可解释pipeline优化

1. TPOT 是什么:一个会自己写代码的机器学习助手你有没有过这种体验:花一整天调参,把 Random Forest 的n_estimators从 100 试到 1000,把max_depth从 5 拉到 20,再换 SVM、XGBoost、LightGBM 轮流上阵,最后…

2026/7/6 23:47:40阅读更多 →
Unity Burst Compiler 1.8 性能剖析:3 种数学计算场景对比,加速比最高达 120 倍

Unity Burst Compiler 1.8 性能剖析:3 种数学计算场景对比,加速比最高达 120 倍

Unity Burst Compiler 1.8 性能剖析:3 种数学计算场景对比当我们需要在Unity中处理大规模数学运算时,Burst Compiler往往能带来惊人的性能提升。最新发布的1.8版本在数学计算优化方面有了显著改进,特别是在矩阵运算、噪声生成和物理模拟这三个…

2026/7/6 23:42:39阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/6 2:48:33阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/6 0:10:35阅读更多 →
Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 技术架构先行:官方接口的合规应用 你是否曾在BP阶段手忙脚乱&#x…

2026/7/6 0:03:39阅读更多 →
多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理 【免费下载链接】mRemoteNG mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager. 项目地址: https://gitcode.com/gh_m…

2026/7/6 0:03:39阅读更多 →
COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南在数据分析和处理领域,去重统计是最基础也是最频繁使用的操作之一。当数据量达到亿级规模时,不同的去重统计方法在性能上可能产生天壤之别。本文将基于 5 亿行数据的实…

2026/7/6 0:03:39阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →