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 -sytle=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 offvoid    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


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

clang-format的使用相关推荐

  1. clang format 官方文档自定义参数介绍(中英文)

    官方文档:http://clang.llvm.org/docs/ClangFormatStyleOptions.html 中文 在代码中配置样式当使用 clang::format::reformat( ...

  2. clang format

    clang format入门 一:VsCode下载 二:ubuntu下载 三:使用(common) 导出 .clang-format 格式化文件 自己找了一些资料,感觉不是太完整,零零碎碎自己来总结一 ...

  3. 【Qt】QtCreator中配置clang-format

    1.安装clang-format sudo apt install clang-format 2.添加插件Beautifier 在QtCreator–>Help–>About Plugin ...

  4. Qt Creator指定代码样式设置

    Qt Creator指定代码样式设置 指定代码样式设置 指定代码样式设置 Qt Creator使用文件的MIME类型来确定用于打开文件的模式和编辑器.Qt Creator在C ++代码编辑器中以&qu ...

  5. vscode 配置代码格式化工具calng-format,windows/linux都支持

    1.安装clang-format工具 linux (ubuntu) sudo apt-get install clang-format-11 windows 下载clang-format.exe,并将 ...

  6. VSCode工具 - C/C++

    记录一下开发中比较符合自己使用习惯的工具,以免之后再次出现花费长时间查找的问题 C/C++ 简介 The C/C++ extension adds language support for C/C++ ...

  7. Clang-Format-Options 中文翻译

    My C/C++ Code Style settings based on Google 作者: tiandyoin 翻译日期: 2022.9.1 翻译版本: clang-format 14.0.6 ...

  8. 编译器GCC与Clang的异同

    GCC:GNU(Gnu's Not Unix)编译器套装(GNU Compiler Collection,GCC),指一套编程语言编译器,以GPL及LGPL许可证所发行的自由软件,也是GNU项目的关键 ...

  9. 深入剖析 iOS 编译 Clang LLVM(编译流程)

    2019独角兽企业重金招聘Python工程师标准>>> 前言 iOS 开发中 Objective-C 和 Swift 都用的是 Clang / LLVM 来编译的.LLVM是一个模块 ...

  10. ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍

    必备   在讲解各编译器之前,必须先了解一下以下这些文件.这些文件在编译器目录下或者编译生成目标平台的可执行程序时经常见到.此外,还需要注意区分 Windows 平台 和 Linux 平台的文件. . ...

最新文章

  1. 从0到1构建数据科学竞赛知识体系,有夕,鱼佬,茂霖等竞赛大咖将特邀分享...
  2. RecyclerView解析--onViewDetachedFromWindow()/onViewAttachedToWindow()
  3. jboss-AS目录结构了解(资料摘取)
  4. 《Python爬虫开发与项目实战》——第3章 初识网络爬虫 3.1 网络爬虫概述
  5. 用友发布新一代价值分析型eHR软件
  6. 屏幕阅读器安全吗_如何为屏幕阅读器设计网站布局
  7. MTK 驱动(69)---MTK平台 电池驱动相关
  8. 【AI】机器学习博士自救指南(严肃者慎入)
  9. 程序员入门--两年养成之路
  10. 【Python系列】之python2.7.6离线安装Matplotlib
  11. linux ftp 实例
  12. 如何搭建大数据分析平台
  13. Atitit 团队工具链体系打造---提升团队效率的一些通用软件 attilax总结
  14. FreeRTOS 教程指南 学习笔记 第一章 简介
  15. Android 启动问题——黑屏 死机 解决方法
  16. matlab结构数组增加域,如何用matlab创建结构数组
  17. tianchai 12023 水管工游戏(DFS搜索)
  18. 概率笔记2——古典概型
  19. “现在的自动驾驶太保守!”看看轻舟智航联合创始人大方这篇论文怎么说
  20. project 2016软件

热门文章

  1. 写代码有这16个好习惯,可以减少80%非业务的bug
  2. 中规院交通院《上海全球城市综合交通体系承载能力与开发研究》
  3. 入门图形学:Texture3D
  4. 武大2020/4/15-关于选派全日制在校生2020/2021学年秋季赴部分欧洲高校交流学习的通知(三)
  5. python抓取网页数据时怎样显示进度条_Python 如何实时显示进度条?
  6. 获取WI-FI信息以及蜂窝网络信息
  7. SpringBoot 教程核心功能-Web 开发(请求处理)
  8. 艾艾贴redis集群
  9. spi slaver接口的fpga实现
  10. 编写程序将电子邮件EmailAddressBook.txt和电话簿TeleAddressBook.txt合并为一个完整的通讯录AddressBook.txt(Address.py)