C语言规范编程

上传人:ji****72 文档编号:43275015 上传时间:2018-06-05 格式:PDF 页数:4 大小:262.90KB
返回 下载 相关 举报
C语言规范编程_第1页
第1页 / 共4页
C语言规范编程_第2页
第2页 / 共4页
C语言规范编程_第3页
第3页 / 共4页
C语言规范编程_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《C语言规范编程》由会员分享,可在线阅读,更多相关《C语言规范编程(4页珍藏版)》请在金锄头文库上搜索。

1、第六节:C语言规范编程 一、c文件和头文件 1.c文件 1.每个 c 文件应该包含对应的头文件。2.c 文件需要使用其他的 c 文件的函数应该包含对应的头文件,切忌头文件包含头文件(除系统文件和配置文件外)。3.全局变量应该定义在 c 文件内部。4.只在本 c 文件使用的函数,应该只在本 c 文件开头进行声明,不应该声明在头文件中。2.头文件 1.所有头文件都应当使用 #define ,防止头文件被多重包含,如下格式:a.头文件的定义符号禁止用“_“和 “_“开头,是因为一般以“_“和”_“开头的标识符为系统保留或者标准库使用,在有些静态检查工具中,若全局可见的标识符以“_“开头会给出告警.

2、b. 为了保证唯一性,更好的命名是PROJECTNAME_PATH_FILENAME_H_2.每个 c 文件对应一个同名的头文件,用于声明对外开放的接口。3.头文件中适合函数的声明,不应该放置函数的具体实现。4.除了系统头文件和配置部头文件以外,禁止头文件循环包含。5. .c .h禁止包含不用的头文件。6.头文件中禁止定义变量,如果定义了,在被多个函数包含的时候就会报重复定义的错误。7.只能通过包含头文件的方式使用其他 .c 提供的接口,禁止在 .c 中通过 extern 的方式使用外部 函数接口、变量。3.#include 和 #include “xxx.h“ 的区别 1. #include

3、 #include 引用的是编译器的类库路径里面的头文件。假如你编译器定义的自带头文件引用在 C:Keilc51INC 下面,则 #include 引用的就是 C:Keilc51INCstdio.h 这个头文件,不管你的项目在什么目录里, C:Keilc51INCstdio.h 这个路径就定下来了,一般是引用自带的一些头文件,如: stdio.h、conio.h、string.h、stdlib.h 等等。2. #include “ “#ifndef FILENAME_H_#define FILENAME_H_*#endif#include “ “ 引用的是你程序目录的相对路径中的头文件,找不到

4、就回去系统路径下寻找。假如你的项目目录是在 D:Projectstmp ,则 #include“my.h“ 引用的就是 D:Projectstmpmy.h 这个头文件,一般是用来引用自己写的一些头文件。如果使用 #include“ “ ,它是会先在你项目的当前目录查找是否有对应头文件,如果没有,它还是会在对应的引用目录里面查找对应的头文件。例如,使用 #include “stdio.h“ 如果在你项目目录里面,没有 stdio.h 这个头文件,它还是会定位到 C:Keilc51INCstdio.h 这个头文件的。二、标识符命名 1.除了常见的通用缩写以外,不使用单词缩写,禁止使用汉语拼音。2.

5、同一个代码应该保持命名风格一致。3.尽量避免名字中出现数字编号,除非逻辑上的确需要编号。4.命名风格:4.1.驼峰式命名,如:lcdDisplayTime.4.2.下划线形式命名,如:lcd_display_time5.标识符命名应该见名知意。三.变量 1.一个变量只有一个功能,不能把一个变量用作多种用途。2.防止局部变量与全局变量同名。3.局部变量定义时应该立即初始化,使用时初始化应该离使用的地方越近越好。4.静态变量加上“s_”前缀。1.全局变量 ! 不用或者少用全局变量。全局变量定义时应该加上前缀,代表该变量为全局变量如:“g_”或“Global”只有当多个文件使用同一个变量是才使用全局

6、变量。全局变量扩展到其他作用域用关键字 extern。四.常量和宏定义 1.用宏定义表达式时,要使用完备的括号,即每个变量和运算都加上()。2.将宏所定义的多条表达式放在大括号中。3.用 do-while(0) 方式定义宏,完全不用担心使用者如何使用宏,也不用给使用者加什么约束。4.使用宏时,不允许参数发生变化.5. 除非必要,应尽可能使用函数代替宏.6.常量建议使用 const 定义代替宏。7.宏定义中尽量不使用return、 goto、 continue、 break等改变程序流程的语句。 五.函数 #define FOO(x) do printf(“arg is %sn“, x); do

7、_something_useful(x); while(0)五.函数 1.一个函数仅完成一件功能。2.重复代码应该尽可能提炼成函数。3.避免函数过长,新增函数不超过50行(非空非注释行)。4.避免函数的代码块嵌套过深,新增函数的代码块嵌套不超过4层。5.对参数的合法性检查,由调用者负责还是由接口函数负责6.函数不变参数使用const(特别是指针)。7.在c文件范围内声明和定义的所有函数,除非外部可见,否则应该增加static关键字。六、注释 1.文件头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者姓名、工号、内 容、功能说明、与其它文件的关系、修改日志等,头文件的注释中还应有函数

8、功能简要说明。,如:2.文件开头每一部分应该分开注释,如3.函数定义处注释描述函数功能、性能及用法,包括输入和输出参数、函数返回值、可重入的 要求等;定义处详细描述函数功能和实现要点,如实现的简要步骤、实现的理由、 设计约束等。,如:/*项 目 名 称:多功能电子时钟 * 实 验 平 台:清翔电子 QXMCS51开发板*创 建 作 者:miki * 项 目 说 明:利用定时器中断实现准确走时,使用数码管来显示时间,蜂鸣器实现闹钟功能* 按键实现校时和切换成秒表功能,以及实现设置闹钟功能等* github 地 址:*创 建 日 期:20171118 */* 包含头文件 */#include “c

9、onfig.h“#include “digital_tube.h“#include “delay.h“#include “timer.h“/* 全局变量定义 */u8 GlobalShi1,GlobalShi0;u8 GlobalFen1,GlobalFen0;u8 GlobalMiao1,GlobalMiao0;u16 GlobalTemp;/* 扩展全局变量定义 */extern u8 GlobalInterruptAdd;/* 局部函数定义 */4.优秀的代码可以自我解释,不通过注释即可轻易读懂。5.修改代码时,维护代码周边的所有注释,以保证注释与代码的一致性。不再有用的注释要删 除。6

10、.避免在一行代码或表达式的中间插入注释。7.文件头、函数头、全局常量变量、类型定义的注释格式采用工具可识别的格式。七、排版和格式 1.程序块采用缩进风格编写, 每级缩进为4个空格,避免使用TAB键。2.相对独立的程序块之间、变量说明之后必须加空行。3.一条语句不能过长,如不能拆分需要分行写。一行到底多少字符换行比较合适,产品可以自 行确定。if、 for、 do、 while、 case、 switch、 default等语句独占一行。在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后 要加空格; 进行非对等操作时,如果是关系密切的立即操作符(如),后不应加空格。注释符(包括/ 和 /* */)与注释内容之间要用一个空格进行分隔。/* 函数名称:main* 函数功能:主函数,整个程序入口* 输入参数:无* 输出参数:无* 其他说明:无*/

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号