当前位置:网站首页>C语言代码规范
C语言代码规范
2022-04-23 05:51:00 【tilblackout】
(1)switch case
swich
和case
标签应该对齐处于同一列
switch (character) {
case 'a':
...
break;
default:
break;
}
(2)一行的长度限制在80列
超过要换行,且进行合适的缩进,一般一个缩进即可。
(3)括号
代码中用到大括号{}
的地方,应该把起始大括号“{”放到行尾,把结束大括号“}”放到行首。如if
、switch
、for
、do
、while
。
- 注意:函数的起始大括号要放置到下一行的开头
只有一个单独的语句时候可不加大括号:
if (condition)
action();
//多分支情况:只要有一个分支不为单独语句即都要加括号
if (condition) {
do_this();
do_that();
} else {
otherwise();
}
(4)空格
- 一元操作符后不要加空格,如
*
(指针)、!
、~
、sizeof
- 二元操作符(两边跟操作数)两旁需要加空格,如
*
(乘法)、=
、!=
、==
、%
- 指针类型中,
*
应该靠近变量名或函数名一侧,而不是靠近类型名。
(5)注释
注释应该告诉别人代码做了什么,而不是怎么做的。注释要放到函数的头部,且应选择/* ……… */
,而不是//
。
对于多行注释,应该像下面这样:
/*
* This is the preferred style for multi-line
* Please use it consistently.
*/
文件信息注释(放在文件最开始):
/*************************************************
Copyright zuozhongkai Co., Ltd. 1998-2018. All rights reserved.
File name: // 文件名
Author: //作者
Version: //版本号
Description: // 用于详细说明此程序文件完成的主要功能,与其他模块
// 或函数的接口,输出值、取值范围、含义及参数间的控
// 制、顺序、独立或依赖等关系
Others: // 其它内容的说明
Log: // 修改日志,包括修改内容,日期,修改人等
*************************************************/
函数的注释:
/*
* @Description: 函数描述,描述本函数的基本功能
* @param 1 – 参数 1.
* @param 2 – 参数 2
* @return – 返回值
*/
(6)命名规则
- 单词用小写,然后每个单词用下划线“_”连接在一起(Linux命名风格)
- 要使用完整的单词或者大家都知道的缩写
- 具有互斥意义的变量或者动作相反的函数应该是用互斥词组命名
(7)函数
- 一个函数完成一个功能
- 重复代码要提炼成函数
- 不同函数用空行隔开,如果需要导出,
EXPORT*
宏应该紧贴在他的结束
大括号下
int system_is_up(void)
{
return system_state == SYSTEM_RUNNING;
}
EXPORT_SYMBOL(system_is_up);
- 若函数内有多重循环,或从多个位置退出时,建议使用
goto
- 函数嵌套不要超过4层
- 对函数的参数做合法性检查
- 仅当前文件使用的函数要加上
static
(8)宏
- 定义常量的宏的名字及枚举里的标签需要大写,但函数宏可用小写
- 使用表达式定义常量的宏必须将表达式置于一对小括号之内,如
#define CONSTEXP (CONSTANT | 3)
- 对于有多条语句的宏,建议写成
do while(0)
格式 - 如果宏是常量,建议使用
const
代替
版权声明
本文为[tilblackout]所创,转载请带上原文链接,感谢
https://blog.csdn.net/tilblackout/article/details/115201257
边栏推荐
- 利用文件保存数据(c语言)
- C [document operation] PDF files and pictures are converted to each other
- 卷积神经网络实现CIFAR100数据集分类
- Graduation project, curriculum link, student achievement evaluation system
- 猜数字游戏
- 软件工程中的十三种文档
- 基于Keras的时装分类案例
- WMI技术介绍和应用
- [UDS unified diagnostic service] II. Network layer protocol (2) - data transmission rules (single frame and multi frame)
- 客户端软件增量更新
猜你喜欢
【UDS统一诊断服务】四、诊断典型服务(5)— 功能/元件测试功能单元(例行程序功能单元0x31)
Programmers can also write novels
jenkspy包安装
Vscode custom comments
深蓝学院激光slam理论与实践 -第二章(里程计标定)作业
[UDS unified diagnosis service] IV. typical diagnosis service (3) - read fault information function unit (storage data transmission function unit)
ArcGIS表转EXCEL超出上限转换失败
基于VGG卷积神经网络的图像识别代码实现
Call procedure of function
FOC 单电阻采样 位置环控制伺服电机
随机推荐
基于VGG对五种类别图片的迁移学习
Graduation project, curriculum link, student achievement evaluation system
类和对象的初始化(构造函数与析构函数)
四元数乘法
Round up a little detail of the round
[learn] HF net training
非参数化相机畸变模型简介
【UDS统一诊断服务】四、诊断典型服务(3)— 读故障信息功能单元(存储数据传输功能单元)
类的继承与派生
搭建openstack平台
猜数字游戏
GDB debugger installation and use
C语言中volatile的使用
PM2 deploy nuxt project
LaTeX配置与使用
【UDS统一诊断服务】五、诊断应用示例:Flash Bootloader
相机标定:关键点法 vs 直接法
友元函数,友元类,类模板
Shell脚本 单引号、双引号和反引号的区别
[UDS] unified diagnostic service (UDS)