C语言 coding style

头文件

The #define Guard
#define的保护文件的唯一性,防止被多重包含
格式 : <PROJECT>_< FILE>_H_
PROJECT : XS
FILE : MV_CTR
头文件的包含顺序
  1. C System Files
  2. Other Libraries
  3. User Library
  4. Conditional include

作用域 

 局部变量

        -变量定义时需要初始化。

静态和全局变量

        -相关的变量建议使用“结构体”存储静态和全局变量

        -“static” -> For internal reference

        -“extern” -> For external reference

 杂项

使用<cstdint>中的变量类型

 0 and NULL

 整数使用0, 实数使用0.0 , 指针使用NULL

 命名规则

几种命名规则

蛇形命名法(推荐)

        local_pose, file_name

        MAX_NUMBER

Pascal Case

        LocalPose, FileName

驼峰命名法

        localPose, fileName

避免使用无意义的缩写

        FirstName -> O

        firstName -> O

        fName -> X

        f_name -> X

规则细则
文件名
  •         Ex : http_proxy.c,
  •         Ex:  hello_word.h
函数名
  •         Ex : delete_url(), open_file()
Typedef命名

        带后缀 “_t

  •         Ex : typedef int32_t* my_pointer_t;
局部变量名
  •         Ex : char *p_my_string = “string”;
指针

        带前缀 “p_

  •         Ex: int32_t *p_my_pointer = NULL;

结构体命名

        结构体名称

  •                 带前缀 “st_
  •                 Typedef 带后缀_t

        结构体成员

                蛇形命名规则

 

变量 & 函数
  •         static variable(此变数只用在此檔案)
  •         static function(此函数只用在此档案)
  •         函数名加前缀 “m_
  •         extern variable(此变量会用在其他档案)
  •         Start with prefix “g_

 

宏定义命名

        全大写并遵循蛇形命名规则

枚举命名

        Enumerator type name

                带前缀“e_

        枚举成员名

                带前缀“k_

注释

注释类型 

  •         //
  •         /* */
  •         文件函数使用Doxygen 类型的注释.

 

 格式

 每行长度

        单行code最多80个字

空格键vs. Tab

        每一行都是用Tab来缩排(length:2个字), 当单行长度超出每行长度, 被强迫换行的部分才会以空格对齐

函数声明与定义
  •         函数名与左括号同一行
  •         函数名与左括号没空格
  •         括号与参数之间没空格
  •         函数定义太长(超过80个字)就换行, 换行要做缩排并对齐左括号后第一个字
 条件表达式(if/else/…)
  •         If, else与左括号间有空格
  •         If与else不同行
  •         左大括号后必定换行
循环与Switch表达式
  •         同上规则,表达式与左括号同一行
  •         表达式与左括号有空格
  •         左大括号后必定换行
 预处理指令

        使用#时放在每一行code的最前面, 不做缩排

 操作符
  •          操作符前后要加space
  •         一元运算符与其参数就不加(ex:-5)
 类型转换

        变量做类型转换时, 包住type的括号与变量名中间不加空格

换行

        基本上都只空一行

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【链表】删除链表的中间节点-力扣2095题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

Spark SQL【电商购买数据分析】

Spark 数据分析 &#xff08;Scala&#xff09; import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, SparkSession} import org.apache.spark.{SparkConf, SparkContext}import java.io.{File, PrintWriter}object Taobao {case class Info(userId: Lo…

UML基础与应用之对象图

什么是对象图&#xff1f; 对象图表示一组对象及它们之间的关系&#xff0c;是某一时刻系统详细信息的快照&#xff0c;描述系统交互的静态图形&#xff0c;它由协作的对象组成&#xff0c;但不包含在对象之间传递的任何消息。因为对象是类的实例化&#xff0c;所以说某一时刻…

MS SQL Server问题汇总

1.报SQL Server Agent连接不上的错误 15:38:57.991 [debezium-sqlserverconnector-sqlserver_transaction_log_source-change-event-source-coordinator] WARN i.d.connector.sqlserver.SqlServerStreamingChangeEventSource - No maximum LSN recorded in the database; pl…

【李沐深度学习笔记】矩阵计算(5)

课程地址和说明 线性代数实现p4 本系列文章是我学习李沐老师深度学习系列课程的学习笔记&#xff0c;可能会对李沐老师上课没讲到的进行补充。 本节是第五篇&#xff0c;由于CSDN限制&#xff0c;只能被迫拆分 矩阵计算 多元函数的等高线 此处参考视频&#xff1a;熟肉)多元…

lenovo联想笔记本电脑ThinkPad X13 AMD Gen2(20XH,20XJ)原装出厂Windows10系统镜像

联想原厂Win10系统&#xff0c;自带所有驱动、出厂主题壁纸、系统属性联想LOGO专属标志、Office办公软件、联想电脑管家等预装程序 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;dolg 适用于型号&#xff1a;20XL,20XJ,20XG,21A1,20XK,20XH,20XF,21A0 所需要…

PyTorch实战:卷积神经网络详解+Python实现卷积神经网络Cifar10彩色图片分类

目录 前言 一、卷积神经网络概述 二、卷积神经网络特点 卷积运算 单通道&#xff0c;二维卷积运算示例 单通道&#xff0c;二维&#xff0c;带偏置的卷积示例 带填充的单通道&#xff0c;二维卷积运算示例 Valid卷积 Same卷积 多通道卷积计算 1.局部感知域 2.参数共…

python教程:“/”运算符和“//”运算符的区别

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 &#x1f447; &#x1f447; &#x1f447; 更多精彩机密、教程&#xff0c;尽在下方&#xff0c;赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备好了&#xff0c;直接在文末名片自取就可 首先先看单斜…

前后端分离毕设项目之springboot同城上门喂遛宠物系统(内含文档+源码+教程)

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

大模型训练显存优化推理加速方案

当前的深度学习框架大都采用的都是fp32来进行权重参数的存储&#xff0c;比如Python float的类型为双精度浮点数fp64&#xff0c;pytorch Tensor的默认类型为单精度浮点数fp32。随着模型越来越大&#xff0c;加速训练模型的需求就产生了。在深度学习模型中使用fp32主要存在几个…

el-upload 上传附件(拆解步骤)

目录 1. 看elementui /element-plus 官网案例 2. html部分&#xff1a; 把官网上的搬下来&#xff0c;最好加一个按钮&#xff0c;上传到服务器&#xff08;后端&#xff09; 3. js 部分&#xff1a; 3.1 首先&#xff0c;先定义一个变量&#xff0c;files 3.2 当上传图片…

解析数据库的“四世同堂”,畅聊数据前沿技术!

引言 数据库与大数据一直是技术圈的两个常青领域。PC 时代诞生了最早的关系型数据库&#xff0c;之后数据类型越来越多&#xff0c;出现了各种非关系型数据库。云时代拉开序幕的同时&#xff0c;“大数据”一词也被广泛使用&#xff0c;涵盖海量数据的采集、处理、存储、分析和…

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Dashdot服务器仪表盘

华为云云耀云服务器L实例评测&#xff5c;云耀云服务器L实例部署Dashdot服务器仪表盘 一、云耀云服务器L实例介绍二、Dashdot介绍2.1 Dashdot简介2.2 开发环境要求2.3 Yarn介绍 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、检查服务器环境4.1 购买云耀云服务器L实例…

DA5 网站用户没有补全的信息

目录 1.题目描述 2.输入描述 3.输出描述 4.题目分析 5.通过代码 1.题目描述 现有一个Nowcoder.csv文件&#xff0c;它记录了牛客网的部分用户数据&#xff0c;包含如下字段&#xff08;字段与字段之间以逗号间隔&#xff09;&#xff1a; Nowcoder_ID&#xff1a;用户ID …

SQL模板-用户留存率计算

在这段实习中&#xff0c;我遇到了用户留存率计算的需求&#xff0c;这里做个总结。 首先来讲下&#xff0c;什么是用户留存&#xff1f; 在互联网行业中&#xff0c;用户在某段时间内开始使用应用&#xff0c;经过一段时间后&#xff0c;仍然继续使用该应用的用户。用户留存一…

netty 客户端 实现断开重连

1、首先引入依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.6.Final</version> </dependency>2、创建server层代码 2.1、编写服务端代码 public static void main(String[]…

十四、MySql的用户管理

文章目录 一、用户管理二、用户&#xff08;一&#xff09;用户信息&#xff08;二&#xff09;创建用户1.语法&#xff1a;2.案例&#xff1a; &#xff08;三&#xff09; 删除用户1.语法&#xff1a;2.示例&#xff1a; &#xff08;四&#xff09;修改用户密码1.语法&#…

【问题记录】解决“命令行终端”和“Git Bash”操作本地Git仓库时出现 中文乱码 的问题!

环境 Windows 11 家庭中文版git version 2.41.0.windows.1 问题情况 在使用 “命令行终端” 和 “Git Bash” 在本地Git仓库敲击命令时&#xff0c;对中文名称文件显示一连串的数字&#xff0c;如下所示&#xff1a;这种情况通常是由于字符编码设置不正确所引起的 解决办法 设置…

ffmpeg抠图

1.不用png&#xff0c;用AVFrame 2.合流 3.图片抠图透明 (1.)mp4扣yuv图&#xff0c;(2)用1.把一张yuv标记为透明然后av_hwframe_transfer_data到GPU (3)用抠图算法函数对yuv进行处理 (4) qsv的h264_qsv只支持nv12和qsv&#xff0c;但qsv本身并不限制像素格式&#xff0c;比如在…

SpringMVC学习笔记——1

SpringMVC学习笔记——1 一、SpringMVC简介1.1、SpringMVC概述1.2、SpringMVC快速入门1.3、Controller中访问容器中的Bean1.4、SpringMVC关键组件的浅析 二、SpringMVC的请求处理2.1、请求映射路径配置2.2、请求数据的接收2.2.1、键值对方式接收数据2.2.2、封装JavaBean数据2.2…