clang-format

news2024/11/25 11:31:08

Clang-Format

Clang-Format Style Options — Clang 18.0.0git documentation

VSCode

1.1 安装扩展 C++

1.2 设置

1.3 使用 .clang-fornat 

  • 放置在项目(代码)文件夹下
  • 使用 .clang-fornat 为文件名

---

# https://clang.llvm.org/docs/ClangFormatStyleOptions.html

BasedOnStyle: LLVM

Language: Cpp

# this style configuration is based on google style configuration.

# The following configuration is different from the basic configuration.

# 缩进宽度

IndentWidth: 4

# 访问权限说明符(public/private等)的偏移

AccessModifierOffset: -4

# 开括号(开圆括号、尖括号、方括号)后的对齐: Align, DontAlign, AlwaysBreak(总是在开括号后换行)

AlignAfterOpenBracket: AlwaysBreak

# 连续赋值时,对齐所有等号

AlignConsecutiveAssignments: true

# 连续声明时,对齐所有声明的变量名

AlignConsecutiveDeclarations: true

# 反斜杆换行的对齐方式

# -- DontAlign - 不进行对齐

# -- Left - 反斜杠靠左对齐

# -- Right - 反斜杠靠右对齐

AlignEscapedNewlines: Right

# 二元、三元表达式的对齐方式(当表达式需要占用多行时)

# -- DontAlign - 不进行对齐

# -- Align - 从操作符开始对齐

# -- AlignAfterOperator - 从操作数开始对齐

AlignOperands: true

# 是否对齐行尾注释

AlignTrailingComments: true

# # 函数声明的所有参数在放在下一行

# AllowAllParametersOfDeclarationOnNextLine: false

# # 是否允许短的代码块放在同一行

# AllowShortBlocksOnASingleLine: false

# # 短的case标签和语句放在同一行

# AllowShortCaseLabelsOnASingleLine: true

# # 短的函数放在同一行

# -- None - 不把短的函数放在同一行

# -- InlineOnly - 只把类内的内联函数放在同一行,全局的空函数不放在同一行

# -- Empty - 只把空的函数放在同一行

# -- Inline - 把类内的内联函数放在同一行,全局的空函数不放在同一行

# -- All - 都允许放在同一行

AllowShortFunctionsOnASingleLine: InlineOnly

# 短的if语句保持在同一行

AllowShortIfStatementsOnASingleLine: false

# # 短的循环保持在同一行

# AllowShortLoopsOnASingleLine: true

# 总是在返回类型后换行: None, All, TopLevel(顶级函数,不包括在类中的函数),

# AllDefinitions(所有的定义,不包括声明), TopLevelDefinitions(所有的顶级函数的定义)

AlwaysBreakAfterReturnType: None

# # 总是在多行string字面量前换行

# AlwaysBreakBeforeMultilineStrings: true

# # 总是在template声明后换行

AlwaysBreakTemplateDeclarations: true

# # 函数调用时,参数的放置规则

# -- false - 参数要么放在同一行,要么每个参数占用一行

# -- true - 不做强制要求

BinPackArguments: true

# 函数声明、定义时,参数的放置规则

# -- false - 参数要么放在同一行,要么每个参数占用一行

# -- true - 不做强制要求

BinPackParameters: false

# 大括号放置风格

# -- Attach - 大括号紧随前方内容,放在同一行

# -- Linux - 与 Attach 类似,除了 函数、命名空间、类定义 的大括号放在下一行

# -- Mozilla - 与 Attach 类似,除了枚举、函数、结构(class\struct\union)的大括号放在下一行

# -- Stroustrup - 与 Attach 类似,但函数定义前、catch前方、else前方的"{}"放在单独一行

# -- Allman - 总是换行

# -- Whitesmiths - 类似 Allman,但"{}"和内部的语句对齐到同样位置

# -- GNU - 总是换行,但在控制语句后的"{}"总是对齐到下一个位置

# -- WebKit - 与 Attach 类似,但在函数定义前换行

# -- Custom - 依赖 BraceWrapping

#   注:这里认为语句块也属于函数

BreakBeforeBraces: Custom

# 大括号换行,只有当BreakBeforeBraces设置为Custom时才有效

BraceWrapping:

  # class定义后面

  AfterClass: true

  # 控制语句后面

  AfterControlStatement: false

  # enum定义后面

  AfterEnum: true

  # 函数定义后面

  AfterFunction: true

  # 命名空间定义后面

  AfterNamespace: true

  # ObjC定义后面

  AfterObjCDeclaration: false

  # struct定义后面

  AfterStruct: false

  # union定义后面

  AfterUnion: true

  # extern之后

  AfterExternBlock: true

  # catch之前

  BeforeCatch: true

  # else之前

  BeforeElse: true

  # 继续缩进大括号

  IndentBraces: false

  # 分离空函数

  # # 当空白函数的"{}"和函数名称不需要放在同一行时,是否拆分函数体

  SplitEmptyFunction: true

  # 分离空语句

  # # 当空白结构(class\struct\union)的"{}"需要放在单独的行时,是否拆分"{}"

  SplitEmptyRecord: true

  # 分离空命名空间

  # # 当空白的命名空间的"{}"需要放在单独的行时,是否拆分"{}"

  SplitEmptyNamespace: true

# # 在二元运算符前换行: None(在操作符后换行), NonAssignment(在非赋值的操作符前换行), All(在操作符前换行)

BreakBeforeBinaryOperators: NonAssignment

# BreakBeforeInheritanceComma: false

# # 在三元运算符前换行

# 当三元表达式不能放在同一行时,是否在三元操作符前方换行

# -- true - 操作符位于新行的首部

# -- false - 操作符位于上一行的尾部

BreakBeforeTernaryOperators: true

# BreakConstructorInitializersBeforeComma: false

# # 构造函数初始化列表分割方式

# -- BeforeColon - 在冒号 ':' 前方分割,冒号位于行首,逗号','位于行尾

# -- BeforeComma - 在冒号和逗号前方分割,冒号和逗号都位于行首,并且对齐

# -- AfterColon - 在冒号和逗号后方分割,冒号和逗号位于行尾

BreakConstructorInitializers: BeforeColon

# # 是否在每个java注解后方换行

BreakAfterJavaFieldAnnotations: true

# # 是否分割过长的字符串

# BreakStringLiterals: false

# # 每行字符长度的限制,0表示没有限制

ColumnLimit: 100

# # 用于匹配注释信息的正则表达式,被匹配的行不会做任何修改

# CommentPragmas:  '^ IWYU pragma:'

# 是否压缩紧接的命名空间

# -- true - 将紧跟的命名空间放在同一行

# -- false - 每个命名空间位于新的一行

CompactNamespaces: false

# # 构造函数的初始化列表要么都在同一行,要么都各自一行

# -- true - 如果可能,初始化列表放在同一行;如果不满足长度选择,则每个单独放一行

# -- false - 初始化列表可以随意放置

# ConstructorInitializerAllOnOneLineOrOnePerLine: false

# # 构造函数的初始化列表和基类集成列表的对齐宽度

ConstructorInitializerIndentWidth: 4

# # 延续语句的对齐宽度

ContinuationIndentWidth: 4

# # 去除C++11的列表初始化的大括号{后和}前的空格

Cpp11BracedListStyle: true

# 是否自动分析指针的对齐方式

# -- true - 自动分析并使用指针的对齐方式,若无法分析,则使用 PointerAlignment

# -- false - 不自动分析

DerivePointerAlignment: true

# 是否禁用格式化

DisableFormat: false

# ExperimentalAutoDetectBinPacking: false

# 是否自动修正命名空间的结束注释

# -- true - 在短的命名空间尾部,自动添加或修改错误的命名空间结束注释

# -- false - 不自动修正

FixNamespaceComments: true

# foreach 循环

ForEachMacros:

  - foreach

  - Q_FOREACH

  - BOOST_FOREACH

# 多个 include 块(有空行分隔的include)排序时的分组规则

# -- Preserve - 保留原有的块分隔,各自排序

# -- Merge - 将所有的块视为同一个,然后进行排序

# -- Regroup - 将所有的块视为同一个进行排序,然后按照 IncludeCategories 的规则进行分组

IncludeBlocks: Preserve

# IfMacros:

#   - KJ_IF_MAYBE

# IncludeBlocks:   Regroup

# IncludeCategories:

#   - Regex:           '^<ext/.*\.h>'

#     Priority:        2

#     SortPriority:    0

#     CaseSensitive:   false

#   - Regex:           '^<.*\.h>'

#     Priority:        1

#     SortPriority:    0

#     CaseSensitive:   false

#   - Regex:           '^<.*'

#     Priority:        2

#     SortPriority:    0

#     CaseSensitive:   false

#   - Regex:           '.*'

#     Priority:        3

#     SortPriority:    0

#     CaseSensitive:   false

# IncludeIsMainRegex: '([-_](test|unittest))?$'

# # 缩进case标签

# -- true - case 不与 switch 对齐

# -- false - case 和 switch 对齐

IndentCaseLabels: true

# 预处理命令(#if\#ifdef\#endif等)的缩进规则

# -- None - 不进行缩进

# -- AfterHash - 在前导'#'后缩进,'#'放在最左侧,之后的语句参与缩进

# -- BeforeHash - 在前导'#'前进行缩进

IndentPPDirectives: AfterHash

# # 函数返回类型换行时,缩进函数声明或函数定义的函数名

# IndentWrappedFunctionNames: false

# JavaScript 中的字符串引号规则

# -- Leave - 保持原样

# -- Single - 全部使用单引号

# -- Double - 全部使用双引号

JavaScriptQuotes: Leave

# 是否在 JavaScript 的 import/export 语句后换行

# JavaScriptWrapImports: true

# 保留在块开始处的空行

# -- true - 保留块起始的空行

# -- false - 删除块起始的空行

KeepEmptyLinesAtTheStartOfBlocks: true

# 用于识别宏定义型块起始的正则表达式

# MacroBlockBegin: ''

# 用于识别宏定义型块结束的正则表达式

# MacroBlockEnd:   ''

# 连续空行的最大数量

MaxEmptyLinesToKeep: 2

# 命名空间内部的缩进规则

# -- None - 都不缩进

# -- Inner - 只缩进嵌套的命名空间内容

# -- All - 缩进所有命名空间内容

NamespaceIndentation: Inner

# Objective-C 相关配置

# ObjCBlockIndentWidth: 2

# ObjCSpaceAfterProperty: false

# ObjCSpaceBeforeProtocolList: false

# PenaltyBreakAssignment: 2

# PenaltyBreakBeforeFirstCallParameter: 1

# PenaltyBreakComment: 300

# PenaltyBreakFirstLessLess: 120

# PenaltyBreakString: 1000

# PenaltyExcessCharacter: 1000000

# PenaltyReturnTypeOnItsOwnLine: 200

# 指针和引用(*和&)的对齐规则

# -- Left - * 靠近左侧

# -- Right - * 靠近右侧

# -- Middle - * 放在中间

# NOTE : 在 SpaceAroundPointerQualifiers 为 Default,

#      且 DerivePointerAlignment 失效后启用

PointerAlignment: Middle

# RawStringFormats:

#   - Delimiter:       pb

#     Language:        TextProto

#     BasedOnStyle:    google

# 重新排版注释

ReflowComments: false

# 重新排序#include

# -- Never - 不进行排序

# -- CaseSensitive - 排序时大小写敏感

# -- CaseInsensitive - 排序时大小写不敏感

SortIncludes: false

# java 中静态 import 的排序规则

# -- Before - 静态放在非静态前方

# -- After - 静态放在非静态后方

# SortJavaStaticImport: Before

# 重新排序using声明

SortUsingDeclarations: false

# 在C风格类型转换后添加空格

SpaceAfterCStyleCast: false

# 在Template关键字后面添加空格

SpaceAfterTemplateKeyword: true

# 在赋值运算符之前添加空格

SpaceBeforeAssignmentOperators: true

# 在 C++11 的初始化列表前加空格

# SpaceBeforeCpp11BracedList: true

# 在构造函数的初始化冒号":"前加空格

# SpaceBeforeCtorInitializerColon: true

# 在构造函数的继承冒号":"前加空格

# SpaceBeforeInheritanceColon: true

# 小括号"()"前加空格的规则

# -- Never - 从不加空格

# -- ControlStatements - 只在控制语句(for/if/while...)时加空格

# -- ControlStatementsExceptForEachMacros - 类型 ControlStatements,只是不再 ForEach 后加空格

# -- Always - 总是添加空格

# -- NonEmptyParentheses - 类似 Always,只是不再空白括号前加空格

SpaceBeforeParens: ControlStatements

# 在 for 循环的冒号":"前加空格

# SpaceBeforeRangeBasedForLoopColon: true

# 在空白的小括号"()"中添加空格

SpaceInEmptyParentheses: false

# 在行尾的注释前添加的空格数(只适用于//)

SpacesBeforeTrailingComments: 1

# 在尖括号的"<"后,和">"前添加空格

SpacesInAngles: false

# 在容器(ObjC和JavaScript的数组和字典等)字面量中添加空格

SpacesInContainerLiterals: true

# 在C风格类型转换的括号中添加空格

SpacesInCStyleCastParentheses: false

# 在圆括号的"("后,和")"前添加空格

SpacesInParentheses: false

# 在中括号中加空格

# 当中括号内没有数据时,不受本规则影响(如空白的lambda 捕获表、不定长度的数组声明)

SpacesInSquareBrackets: false

# 语言标准: Cpp03, Cpp11, Auto

Standard: Cpp11

# tab宽度

TabWidth: 4

# 使用tab字符: Never, ForIndentation, ForContinuationAndIndentation, Always

UseTab: Never

---

VS

2.1 安装扩展 ClangFormat

2.2 使用 .clang-fornat 

同 vscode

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1350102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

document360的替代品:原来它也这么好用

在当今信息爆炸的时代&#xff0c;企业和组织需要一个高效的知识管理系统来整理、存储和共享知识。document360是一款备受欢迎的知识库管理系统&#xff0c;但是它并非唯一的选择。本文将介绍document360的替代品&#xff0c;感兴趣就往下看吧。 首先&#xff0c;让我们来了解…

Python分析了京东7万+条评论,仅用3分钟,结果发现……

之前学习Python爬虫采集&#xff0c;为了练手用Scrapy写了一个爬虫&#xff0c;整整采集了京东平台vivo旗舰店7万多条评论。一直也没觉得这些评论数据有啥用&#xff0c;就留在MongoDB中吃灰。最近学了jieba和wordcloud之后&#xff0c;突发奇想着分析下这7万多条评论数据&…

【网络安全】上网行为代理服务器启用Alerts

文章目录 启用AlertsAlert Limits per 24 hoursEmail AlertsSystem Alerts Suspicious Activity AlertsPermitted Suspicious Activity AlertsBlocked Suspicious Activity Alerts Protocol&Category Usage Alerts告警邮件范例推荐阅读 这里的Web Proxy主要代指proxy serve…

HarmonyOS应用开发-搭建开发环境

本文介绍如何搭建 HarmonyOS 应用的开发环境&#xff0c;介绍下载安装 DevEco Studio 开发工具和 SDK 的详细流程。华为鸿蒙 DevEco Studio 是面向全场景的一站式集成开发环境&#xff0c;面向全场景多设备&#xff0c;提供一站式的分布式应用开发平台&#xff0c;支持分布式多…

声纹识别资源汇总(不断更新)

目录 一、任务说明二、指标三、声纹识别研究现状四、数据集开源&#xff08;1&#xff09;VoxCeleb&#xff1a;&#xff08;2&#xff09;WSJ and LibriSpeech Corpus&#xff08;3&#xff09;VOiCES Dataset&#xff08;4&#xff09;English Multi-speaker Corpus for Voic…

机器学习笔记(四)初识卷积神经网络

前言 第一次写卷积神经网络&#xff0c;也是照着paddlepaddle的官方文档抄&#xff0c;这里简单讲解一下心得。 首先我们要知道之前写的那些东西都是什么&#xff0c;之前写的我们称之为简单神经网络&#xff0c;也就是简单一层连接输出和输出&#xff0c;通过前向计算和逆向…

LM358 典型应用Multisim仿真设计

一、LM358简介&#xff1a; LM358 运算放大器属于一种低功率双运算放大器&#xff0c;由两个独立的高增益内部频率补偿运算放大器组成&#xff0c;专门设计用于在宽电压范围内由单电源供电。LM358 运算放大器具有低功耗、共模输入电压范围扩展到地/VEE以及单电源或双电源操作。…

代表团坐车 - 华为OD统一考试

OD统一考试&#xff08;B卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 某组织举行会议&#xff0c;来了多个代表团同时到达&#xff0c;接待处只有一辆汽车可以同时接待多个代表团&#xff0c;为了提高车辆利用率&#xff0c;请帮接待…

Linux 系统拉取 Github项目

一、安装Git 在Linux上拉取GitHub项目可以使用Git命令。首先确保已经安装了Git。如果没有安装&#xff0c;可以通过包管理器&#xff08;比如apt、yum&#xff09;来进行安装。 sudo yum install git #查看安装版本 git -version二、关联GitHub 配置本地账户和邮箱 >>…

Redis缓存穿透,缓存击穿,缓存雪崩

文章目录 Redis缓存穿透&#xff0c;缓存击穿&#xff0c;缓存雪崩1. 缓存穿透1.1 解决方案1&#xff1a;缓存空数据1.2 解决方案2&#xff1a;使用布隆过滤器1.2.1 布隆过滤器介绍 2. 缓存击穿2.1 解决方案1&#xff1a;互斥锁2.2 解决方案2&#xff1a;逻辑过期 3. 缓存雪崩3…

抖店和商品橱窗有什么区别?新手应该选哪个?

我是电商珠珠 临近年底了&#xff0c;有的人已经开始为下一年筹谋&#xff0c;有的去抖音做账号做直播带货&#xff0c;不会直播带货的就想尝试做下抖店&#xff0c;来为以后的经济打基础。 刚想要接触却对这类有些迷糊&#xff0c;发现商品橱窗和抖店都可以卖货&#xff0c;…

k8s基础架构

k8s基础架构 创建pod流程 &#xff08;1&#xff09;用户通过kubectl向api-server发起创建pod请求&#xff1b; &#xff08;2&#xff09;apiserver通过对应的kubeconfig进行认证&#xff0c;认证通过后将yaml中的po信息存到etcd&#xff1b; &#xff08;3&#xff09;Contr…

Oracle笔记-查看表已使用空间最大空间

目前以Oracle18c为例&#xff0c;主要是查这个表USER_SEGMENTS。 在 Oracle 18c 数据库中&#xff0c;USER_SEGMENTS 是一个系统表&#xff0c;用于存储当前用户&#xff08;当前会话&#xff09;拥有的所有段的信息。段是 Oracle 中分配存储空间的逻辑单位&#xff0c;用于存…

Java智慧校园源码,SaaS云平台,私有云部署,移动端小程序使用小程序原生语言开发

系统概述&#xff1a; 电子班牌系统又称之为智慧班牌&#xff0c;是当前校园数字化信息化建设、文化建设的主流&#xff0c;是校园日常工作安排、校园信息发布、班级文化风采展示、课堂交流的重要应用载体。智慧班牌系统在传统信息发布和校园文化展示功能基础上&#xff0c;融…

Polygon zkEVM ROM Spearbit审计报告解读(2023年6月Dragon Fruit升级版本)

1. 引言 前序博客有&#xff1a; Polygon zkEVM Hexens审计报告解读Polygon zkEVM Spearbit审计报告解读&#xff08;2022年12月版本&#xff09;Polygon zkEVM Spearbit审计报告解读&#xff08;2023年1月版本&#xff09;Polygon zkEVM Spearbit审计报告解读&#xff08;20…

计网自顶向下(多线程Web代理服务器)

目录 &#x1f33c;前言 &#x1f33c;多线程Web代理服务器 &#x1f392;过程 &#x1f3c0;解释 &#x1f333;代码 &#x1f33c;前言 前置知识 &#xff08;1&#xff09;进程 与 线程 进程与线程的一个简单解释 - 阮一峰的网络日志 (ruanyifeng.com) &#xff08;…

计算机组成原理 数据的表示与运算

文章目录 数据的表示与运算数据表示定点数的表示与运算定点数的表示无符号数有符号数定点整数定点小数四码反码补码移码 总结 定点数的运算算术移位原码反码补码总结 逻辑位移循环位移总结 加减运算原码加减法补码加减法 溢出判断采用一位符号位 浮点数的表示与运算表示IEEE 75…

【排序算法】【二叉树】【滑动窗口】LeetCode220: 存在重复元素 III

作者推荐 【二叉树】【单调双向队列】LeetCode239:滑动窗口最大值 本文涉及的基础知识点 C算法&#xff1a;滑动窗口总结 题目 给你一个整数数组 nums 和两个整数 indexDiff 和 valueDiff 。 找出满足下述条件的下标对 (i, j)&#xff1a; i ! j, abs(i - j) < indexDi…

2024校招测试工程师笔试——经典错题记录和解析

大家好&#xff0c;这篇文章记录几个测开方向经典的例题&#xff0c;并给出相应解析&#xff0c;欢迎给出你的看法 下列关于软件性能测试的说法中&#xff0c;正确的是&#xff1a;&#xff08; &#xff09; A 性能测试的目的不是为了发现软件缺陷 B 压力测试与负载测试的目的…

Ansible自动化运维(一)简介及部署、清单

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…