clang-format

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3分钟Alibaba Cloud Linux镜像操作系统详解

Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS的阿里云发行版&#xff0c;针对阿里云服务器ECS做了大量深度优化&#xff0c;Alibaba Cloud Linux由阿里云官方免费提供长期支持和维护LTS&#xff0c;Alibaba Cloud Linux完全兼容CentOS/RHEL生态和操作方式…

c语言-整型在内存的存储

文章目录 前言一、整型数值在内存中的存储1.1 整型数值的表示形式1.2 二进制的表示形式1.3 整数在内存中存储 二、大端字节序存储和小端字节序存储2.1 大端字节序存储2.2 小端字节序存储2.3 练习 总结 前言 本篇文章叙述c语言中整型数据在内存中的存储方式。 一、整型数值在内…

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜,Kotlin(1)

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜&#xff0c;Kotlin&#xff08;1&#xff09; 实现查看图片的放大镜&#xff0c;放大镜随着手指在屏幕上的移动&#xff0c;放大镜里面展示手指触点为中心、半径长度的圆形放大后的图片。 剪切出一块圆形Path…

在VUE项目中使用svg图标

在VUE项目中使用svg图标 安装项目依赖 npm i svg-sprite-loader4.1.3 这里之后打包的时候&#xff0c;可能会报非常多错误&#xff0c;比如&#xff1a;Error Cannot find module ‘webpacklibRuleSet‘ 若有报这个错误&#xff0c;重新安装一下webpack npm i webpack4.29.5 -…

Selenium教程06:单选框+多选框+下拉框组件的示例练习

1.Radio单选框的示例用法&#xff0c;通过网页元素class和type属性多条件共同定位元素&#xff0c;模拟依次选中Android&#xff0c;Apple&#xff0c;Windows。 网页元素结构 <input type"radio" class"ivu-radio-input" name"ivuRadioGroup_170…

二叉树的层序遍历,力扣

目录 题目地址&#xff1a; 题目&#xff1a; 我们直接看题解吧&#xff1a; 解题方法&#xff1a; 方法分析&#xff1a; 解题分析&#xff1a; 解题思路&#xff1a; 代码实现&#xff1a; 代码补充说明&#xff1a; 题目地址&#xff1a; 102. 二叉树的层序遍历 - 力扣&…

ansible 配置jspgou商城上线(MySQL版)

准备环境 准备两台纯净的服务器进行&#xff0c;在实验之前我们关闭防火墙和selinux systemctl stop firewalld #关闭防火墙 setenforce 0 #临时关闭selinux hosts解析(两台服务器都要去做) [rootansible-server ~]# vim /etc/hosts 10.31.162.24 ansible-ser…

python中除以0的情况

python中除以0的情况 通常情况下在 numpy 中 通常情况下 在 Python 中&#xff0c;除以零会导致一个 ZeroDivisionError 在 numpy 中 “invalid value encountered in scalar divide” 是一个运行时警告&#xff0c;通常在你试图将一个数值除以零或者一个非常接近零的数值时…

玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— DevEco Studio下载与安装

一、下载DevEco Studio IDE开发工具 1. 登录鸿蒙官网 网址为&#xff1a; ​​​​​​​华为HarmonyOS智能终端操作系统官网 | 应用设备分布式开发者生态 页面如下&#xff1a; 2. 搜索“DevEco Studio IDE” 点击右上角的“请输入关键词”&#xff0c;在其中搜索“DevEc…

【Unity嵌入Android原生工程】

Unity嵌入Android原生工程 本章学习,Unity模块嵌入Android## 标题Unity导出Android工程创建Android Studio工程Unity嵌入到Andorid StudioAndroid原生代码跳转到Unity场景工作需要嵌入原生工程,并实现热更,记录一下 工具,Unity2023.3.14,Android Studio 2022.3.1 patch3 Un…

python+pygame+opencv+gpt实现虚拟数字人直播(一)

AI技术突飞猛进&#xff0c;不断的改变着人们的工作和生活。数字人直播作为新兴形式&#xff0c;必将成为未来趋势&#xff0c;具有巨大的、广阔的、惊人的市场前景。它将不断融合创新技术和跨界合作&#xff0c;提供更具个性化和多样化的互动体验&#xff0c;成为未来的一种趋…

【基础篇】九、程序计数器 JVM栈

文章目录 0、运行时数据区域1、程序计数器2、JVM栈3、JVM栈--栈帧--局部变量表4、JVM栈--栈帧--操作数栈5、JVM栈--栈帧--桢数据6、栈溢出7、设置栈空间大小8、本地方法栈 0、运行时数据区域 JVM结构里&#xff0c;类加载器下来&#xff0c;到了运行时数据区域&#xff0c;即Ja…

Linux用shell脚本执行乘法口诀表的两种方式

#!/bin/bash # *********************************************************# # # # * Author : 藻头男 # # * QQ邮箱 : 2322944912qq.com # …

数据库选择题 (期末复习)

2015期末 1、在数据库中&#xff0c;下列说法&#xff08;A&#xff09;是不正确的 A. 数据库避免了一切数据的重复 B. 数据库可以实现数据的独立性 C. 数据库中的数据可以共享 D. 数据库减少了数据冗余 2、事务日志一般用于保存&#xff08;C&#xff09; A. 程序运行过程 B…

怎么规划自己的现货白银交易生涯?

做现货白银交易不是儿戏的&#xff0c;应该对自己的生涯进行有效的规划&#xff0c;那么投资者如何规划自己的交易生涯呢&#xff1f;下面&#xff0c;我们将从资金管理和增长的角度来讨论一下。 首先我们讨论一下&#xff0c;在现货白银交易中应该如何管理盈利。我们应该要注意…

ByteTrack算法流程的简单示例

ByteTrack ByteTrack算法是将t帧检测出来的检测框集合 D {\mathcal{D}} D 和t-1帧预测轨迹集合 T ~ t − 1 {\tilde{T}_{t-1}} T~t−1​ 进行匹配关联得到t帧的轨迹集合 T t {T_{t}} Tt​。 首先使用检测器检测t帧的图像得到检测框集合 D {\mathcal{D}} D&#xff0c;再…

Oracle-增删改查

增删改 处理日期 oracle 处理date 类型 必须使用 to_date 函数或 sysdate oracle 与 mysql 处理 date 的区别mysql 中的 date 类型 只 支持 年月日, 使用 2000-10-01 oracle 中 date 类型 包含 年月日时分秒, 使用 to_date 函数to_date(1999-10-15,yyyy-MM-dd)​orac…

思科校园网搭建及配置综合小型实验

思科校园网搭建及配置综合小型实验 实验拓扑配置步骤配置聚合链路配置VTP&#xff0c;vlan域模板第一步 配置二层VLAN第二步 配置生成树第三步 配置相关IP地址第四步 配置DHCP及DHCP中继第五步 配置三层的网关冗余协议 双机热备及OSPF第六步 配置静态路由,NAT地址转换及其他配置…

STM32 ESP8266 物联网智能温室大棚 (附源码 PCB 原理图 设计文档)

资料下载: https://download.csdn.net/download/vvoennvv/88680924 一、概述 本系统以STM32F103C8T6单片机为主控芯片&#xff0c;采用相关传感器构建系统硬件电路。其中使用DHT11温湿度传感器对温度和湿度的采集&#xff0c;MQ-7一氧化碳传感器检测CO浓度&#xff0c;GP2Y101…

深度思考,AI项目的人工智能到底引领的是什么?

项目深度思考&#xff0c;人工智能到底引领的是什么&#xff1f; 人工智能引领技术之舞&#xff1a;项目深度思考项目背景&#xff1a;人工智能的魔法时代技术选择的深度思考&#xff1a;AI大决战团队协作的深度思考&#xff1a;AI联盟大会用户体验的深度思考&#xff1a;AI之光…