clang-format的使用

2023-05-16

clang-format使用

  • 1. clang-format简介
  • 2. clang-format的使用
    • 2.1 clang-format中.clang-format file
    • 2.2 示例:配置google的代码风格
    • 2.3 vscode clang-format配置
  • 3. clang-format 中 .clang-format file配置(yaml格式)
    • 3.1 配置多个语言的约束
    • 3.2 将某段代码忽略format
    • 3.3 对齐方式
    • 3.4 数组的左右对其设置
    • 3.5 连续赋值语句的格式设置,是否等号对齐
    • 3.6 AlignConsecutiveBitFields
    • 3.7 AlignConsecutiveDeclarations
    • 3.8 宏的对齐AlignConsecutiveMacros
    • 3.9 AlignEscapedNewlines(对齐选项中的反斜杠转义换行符)
    • 3.10 对齐操作符
    • 3.11 尾部注释格式
    • 3.12 函数调用
    • 3.13 函数对齐
  • 参考文献

1. clang-format简介

Clang-Format可用于格式化(排版)多种不同语言的代码。
其自带的排版格式主要有:LLVM, Google, Chromium, Mozilla, WebKit等; 利用style参数配置风格。
通过编写 .clang-format 文件,可以实现代码风格的配置。

2. clang-format的使用

2.1 clang-format中.clang-format file

我们可以自定制代码风格约束,通过一下命令进行使用:

clang-format -style=file 

注意:file不是 .clang-format file的路径,就是file关键字;说明使用 the .clang-format file located in the closest parent directory of the input file. clang-format的设置进行代码约束;其他选项:-style=LLVM, Google, Chromium, Mozilla, WebKit

而.clang-format file由一下命令生成:生成google风格的clang-format配置文件

clang-format -style=google -dump-config > .clang-format

第二种方法配置:也可以通过设置key:value的方式进行
如:

clang-format -style="{BasedOnStyle: llvm, IndentWidth:8} ..."

2.2 示例:配置google的代码风格

#1) 生成.clang-format文件
clang-format -style=google -dump-config > .clang-format
# 2) 配置.clang-format: 参考:https://clang.llvm.org/docs/ClangFormatStyleOptions.html
# 3)通过.clang-format文件,进行代码风格约束
# 格式化结果打印到中断
clang-format -style=file code.cpp
# 直接修改文件
clang-format -style=file -i code.cpp

2.3 vscode clang-format配置

3. clang-format 中 .clang-format file配置(yaml格式)

3.1 配置多个语言的约束

---
# We'll use defaults from the LLVM style, but with 4 columns indentation.
BasedOnStyle: LLVM
IndentWidth: 4
---
# C++
Language: Cpp
# Force pointers to the type for C++.
DerivePointerAlignment: false
PointerAlignment: Left
---
Language: JavaScript
# Use 100 columns for JS.
ColumnLimit: 100
---
Language: Proto
# Don't format .proto files.
DisableFormat: true
---
Language: CSharp
# Use 100 columns for C#.
ColumnLimit: 100
...

3.2 将某段代码忽略format

int formatted_code;
// clang-format off
    void    unformatted_code  ;
// clang-format on
void formatted_code_again;

3.3 对齐方式

官方截图

3.4 数组的左右对其设置

实际None设置为false;
注意:clang-format的版本,只有13是支持的
13版本前不支持
官方截图

3.5 连续赋值语句的格式设置,是否等号对齐

根据下面的示例可以清楚的设置不同的格式情况;
注意:clang-format的版本,只有13是支持的
13版本前只支持true/false
官方图片
官方图片

3.6 AlignConsecutiveBitFields

官方截图-13
官方截图

3.7 AlignConsecutiveDeclarations

与AlignConsecutiveAssignments一样配置; 将声明语句与赋值语句对齐

3.8 宏的对齐AlignConsecutiveMacros

官方截图
官方截图

3.9 AlignEscapedNewlines(对齐选项中的反斜杠转义换行符)

在这里插入图片描述

3.10 对齐操作符

在这里插入图片描述

3.11 尾部注释格式

在这里插入图片描述

3.12 函数调用

在这里插入图片描述

3.13 函数对齐

在这里插入图片描述
根据需要设定不同的配置:
具体说明:https://clang.llvm.org/docs/ClangFormatStyleOptions.html

参考文献

  1. https://clang.llvm.org/docs/ClangFormatStyleOptions.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

clang-format的使用 的相关文章

随机推荐

  • 【RPC学习之旅】手把手实现一个RPC框架

    手把手实现一个RPC框架 一 RPC前置知识介绍 1 什么是RPC xff1f RPC是远程过程调用 xff08 Remote Procedure Call xff09 的缩写形式 假设我们有两台服务器A与B xff0c 一个在A服务器上部
  • 【SpringBoot之旅】手把手教你Swagger接口文档神器使用

    手把手教你Swagger接口文档神器使用 相关内容地址Swagger官方文档swagger io docs specif Swagger常用注解blog csdn net weixin 4252 Swagger2常用注解blog csdn
  • 年度回忆录(2011.01----2011.07)

    看了看上次的总结是 2011 年 1 月 1 日 xff0c 距离这次的总结有将近七个月的时间 xff0c 下面来说一说这七个月的学习情况 xff08 按照时间进度 xff09 l 英语 xff08 1 月 now xff09 上次做总结的
  • VFH避障流程以及策略

    VFH避障核心代码讲解 xff0c 以及避障流程 VFH是一种由人工势场法改进而来的机器人导航算法 在机器人移动的过程中 xff0c 利用传感器探测周围障碍物信息 xff08 图1 xff09 xff0c 生成极坐标直方图 xff08 图2
  • 解决E: 仓库 “ubuntu bionic Release” 没有 Release 文件

    span class token function sudo span span class token function apt get span update 时候 xff0c 发现404 Not Found E 仓库 http ppa
  • c#/winform 串口编程

    这里结合看到的一些知识和在实际项目中应用的一些方法说明一下如何在 NET平台下使用C 创建串口通信程序 在 net 2 0中提供了串口通信的功能 xff0c 其功能的实现主要是System IO Ports 命名空间下实现的 可以通过加入这
  • c++:线程和进程的区别

    线程是指进程内的一个执行单元 也是进程内的可调度实体 与进程的区别 1 地址空间 进程内的一个执行单元 进程至少有一个线程 它们共享进程的地址空间 而进程有自己独立的地址空间 2 资源拥有 进程是资源分配和拥有的单位 同一个进程内的线程共享
  • Mac设置环境变量

    环境变量是电脑操作系统中常用的一些变量 xff0c 作用类似于将一些常用命令所在的文件夹位置预先告诉操作系统 xff0c 当以后需要用到这些命令时 xff0c 操作系统就自动来这些位置取 例如 xff0c 常见的Java开发中配置的相关环境
  • Java--Java版本和JDK版本

    对于Java初学者 xff0c 经常会听到同事 xff0c 或看到网上Java版本和JDK版本不一的叫法 xff0c 不明白这两者到底什么关系 xff1f 其实博主当年初学Java时也有这样的困惑 xff0c 今天我们就来好好探讨一下 xf
  • Oracle-Windows双击Oracle的setup.exe一闪而过;Oracle安装后的默认账号和密码

    双击Oracle解压包之后的setup exe之后 xff0c 界面一闪而过 xff0c 主要是如下三种原因 1 安装路径不要包含中文 2 安装路径不要包含空格 3 右击 xff0c 选择 以管理员身份运行 顺带提下Oracle安装之后的默
  • Java--Stream流详解

    Stream 是Java 8 API添加的一个新的抽象 xff0c 称为流Stream xff0c 以一种声明性方式处理数据集合 xff08 侧重对于源数据计算能力的封装 xff0c 并且支持序列与并行两种操作方式 xff09 Stream
  • Kubernetes - Kubernetes详解;安装部署(一)

    一 Kubernetes Kubernetes 这个单词源于希腊语 xff0c 意为 舵手 或 飞行员 Kubernetes xff0c 也称为K8S xff0c 其中8是代表中间 ubernete 的8个字符 xff0c 是Google在
  • Shiro - Shiro简介;Shiro与Spring Security区别;Spring Boot集成Shiro

    一 Shiro 以下引自百度百科 shiro xff08 java安全框架 xff09 百度百科 Apache Shiro是一个强大且易用的Java安全框架 xff0c 执行身份验证 授权 密码和会话管理 使用Shiro的易于理解的API
  • 最近

    距离软考还有 3 天的时间 xff0c 该复习的都复习了 xff0c 复习不到的知识点也只有搁置了 任何事情都不可能是完美的 xff0c 软考也一样 xff0c 要的只是追求完美的过程 xff0c 结果重要但是过程更重要 复习到现在感觉基础
  • 微信小程序-微信小程序登录流程(一)

    微信小程序 xff0c 小程序的一种 xff0c 英文名Wechat Mini Program xff0c 是一种不需要下载安装即可使用的应用 xff0c 它实现了应用 触手可及 的梦想 xff0c 用户扫一扫或搜一下即可打开应用 冷启动
  • 微信小程序-获取不限制的小程序码(二)

    一 获取小程序码 获取小程序码 微信开放文档 与 createQRCode 总共生成的码数量限制为 100 000 xff0c 请谨慎调用 调用方式 HTTPS 调用 POST https api weixin qq com wxa get
  • 微信-微信退款(三)

    一 微信申请退款 微信支付退款 API 地址 https pay weixin qq com wiki doc api app app php chapter 61 9 4 amp index 61 6 应用场景 当交易发生之后一段时间内
  • iOS-UILabel根据文本、字体大小计算label宽度;以及自适应高度

    下载地址 GitHub源码 或者 Demo下载 想获得所有字体 xff0c 如下 xff1a 获取到所有的字体名称 NSArray familyNames 61 UIFont familyNames NSLog 64 34 所有字体名称 6
  • iOS开发Provisioning profile "iOS Team Provisioning Profile:xxx" doesn't include signing certificate

    连接真机设备时爆红 因博主忘了截图已经处理过的截图 问题如下 xff1a Provisioning profile 34 iOS Team Provisioning Profile com xxx xxx 34 doesn 39 t inc
  • clang-format的使用

    clang format使用 1 clang format简介2 clang format的使用2 1 clang format中 clang format file2 2 示例 xff1a 配置google的代码风格2 3 vscode