C语言软件编程规范
拟定:黄宗灯日期:2019-01-25评审:日期:
批准:日期:
Revision Record修订记录
Date 日期Revision
Version
修订
版本
Sec
No.
修改
章节
Change Description
修改描述
Author
作者
2019-01-25v1.0All initial初稿完成黄宗灯
关键词:编程规范、软件开发规范、规则、建议、规范
摘要:本文描述了宇眼科技C语言在设计和编码过程中,需要遵循的一些基本规范。
缩略语清单:
Abbreviations缩略语Full spelling英文全名Chinese explanation中文解释
ppf Police Platform警用平台
cpf Car Platform汽车平台
fpf Fire Control Platform消防平台
ueyes UEYES宇眼科技
1.概述
1.1.目的
制定本规范的目的是在宇眼科技的开发和维护过程中,统一设计规范和编程规范,便于提高开发效率,统一风格,提高软件质量和可维护性。
1.2.本规范所规定的内容
1)目录组织结构,文件命名,头文件组织;
2)在函数设计、实现过程中所遵循的一些规范;
3)在调试,维护,源程序管理等其他方面的一些规范;
4)组件设计、裁减及配置方面的规范;
采用以下的术语描述:
规则:工作过程中强制必须遵守的原则
建议:工作过程中必须加以考虑的原则
说明:对此规则或建议进行必要的解释
2.目录结构规范
由于Unix、Linux下对字母大小写敏感,为减少出错的机率,统一规定宇眼科技所有目录名都使用小写。
3.文件组织
3.1.文件类型及命名
规则3-1-1:宇眼科技的源程序文件有如下类型的文件:
头文件:*.h
程序文件:*.c
规则3-1-2:文件名必须为小写字母;
说明:由于Unix、Linux下对文件名大小写敏感,为减少因此出错的概率,统一规定使用小写字母。
规则3-1-3:文件名前加一个表示模块的前缀以避免重名;
示例:
ply_ui.c
具体前缀请参考:4.1标识定义;
规则3-1-4:几种特殊类型的文件命名如下:
xxx_interface.h:模块的对外(提供给其他模块使用的接口)的头文件,使用该模块时需要包含的头文件;
例如:ply_interface.h
3.2.文件内容组织
规则3-2-1:公用头文件包含需要全局引用的宏定义、变量说明、结构说明和外部函数声明等。但不应包含变量定义;
规则3-2-3:头文件包含使用相对路径,包含中的文件分隔符必须使用正斜杠(/),不能使用反斜杠(\),因为反斜杠与Linux、Unix系统下不兼容;
例如:#include"devinc/dev_state.h"
说明:头文件的具体位置可以通过设置搜索路径的方式处理,如果头文件存放位置发生改变会比较方便。
规则3-2-4:在C源程序文件中不允许声明不在本文件中定义的外部函数并直接引用;
说明:本规则是为了避免误用其他模块的内部函数。在.c文件中声明不在本文件中定义的外部函数之后可以直接访问这个函数,但是由于被调用的函数并没有意识到这个函数被其他人使用,所以可能会独自修改其原型,最后导致错误。
如果需要使用其他模块的外部函数,应由提供该函数的模块将其明确的在.件中声明为外部函数,使用者必须包含该头文件。
规则3-2-5:在C源程序文件中不允许跨模块直接访问其他模块的变量,而应该有其他模块提供相应的接口进行访问。
3.3.注释
对注释的要求请参考总则的第2章。本节未覆盖内容以总则为准,以下部分内容如与总则冲突,以本规范为准。
建议3-3-1:头文件中的每项声明都应加注释。
说明:头文件中的声明如数据结构、全局变量、函数都是代码中较重要的部分,清楚的注释有利于代码的可读性。
规则3-3-2:注释格式统一,使用“/*……*/”。
说明:一些编译器不支持C++风格的注释“//”
规则3-3-3:在#endif后面应该加上注释/**/,注释的内容为和它匹配的#if语句的内容。
示例:
#ifdef__UEYES_DEBUG__
......
#else
#error some error logs
#endif/*__UEYES_DEBUG__*/
说明:对比较复杂的编译宏(超过6行或以上),应该采用上述方式以增加可读性。对于比较简单的宏可以不加该注释。
3.4.编码所使用的SourceInsight Quicker宏
为了能够规范化函数注释,以及使用doxygen自动生成对外头文件,编码要求使用的宇眼科技整理提供的source insight宏。
参见:《quicker安装和使用说明v1.1》
c语言编程软件是系统软件吗4.数据类型定义
4.1.标识定义
模块命名(待整理增加):
序号模块描述模块名
1驱动bsp
2主控pmc
3消息msg
4看门狗wdt
5设备管理dev
6命令行cli
7日志log
8升级upg
9回放pb
10网页web
11通用common
12媒体media
4.2.基本数据类型
为了用户的方便,C99标准的C语言硬件为我们定义一些好用的基本数据类型,我们放心使用就可以了。因此统一使用stdint.h头文件中定义的基本数据类型进行编程:uint8_t/uint16_t/uint32_t/uint64_t
按照posix标准,一般整形对应的*_t类型为:
1字节uint8_t
2字节uint16_t
4字节uint32_t
8字节uint64_t
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论