一、头文件编程规范
三大原则——设计层面:
1、头文件中适合放置接口声明,不适合放实现
2、头文件职责单一
3、头文件应向稳定的方向包含
八项规则——编码层面:
1、只能通过包含头文件的方式使用其他模块提供的接口,禁止在.c中通过extern的方式使用外部函数接口、变量 2、禁止在头文件中定义变量 3、禁止在extern“C”中包含头文件 4、总是编写内部的#ifdef保护符 5、头文件应当自包括 6、禁止头文件循环依赖 7、禁止包含用不到的头文件 (否则多次包含该头文件会有变量重复定义的错误); 头文件的包含关系代表一种依赖,头文件变化会引起包含该文件的模块重新编译; 8、每一个.c文件应有一个同名.h文件,用于声明需要对外公开的接口
二、函数编程规范
为什么需要函数
1、降低复杂度,易于思考 2、便于协同开发 3、代码复用,减少代码量 4、封装变化 5、良好的可移植性
函数规范
1、圈复杂度小于7 圈复杂度就是一个函数可以执行的路径条数; 2、函数短小(推荐小于50行,一屏) 3、嵌套层数小于5 单行字符数小于80个,一屏; 4、职责单一 接受函数名的约束,避免文不对题; 5、抽象层次单一 避免读者迷失在细节; 6、参数不超过3个 7、避免重复 8、避免重入问题 时间上,在函数执行完之前,又一次被调用,称为重入;只有在函数中有对公共资源访问的时候,才会有问题; 9、不要返回局部变量
三、语法规范
命名、注释、格式、效率、安全
内存划分与管理
C语言中内存堆和栈的区别
一般情况下程序存放在Rom(只读内存,比如硬盘)或Flash中,运行时需要拷到RAM(随机存储器RAM)中执行,RAM会分别存储不同的信息,如下图所示:
内存中的栈区处于相对较高的地址以地址的增长方向为上的话,栈地址是向下增长的。
栈中分配局部变量空间,堆区是向上增长的用于分配程序员申请的内存空间。另外还有静态区是分配静态变量,全局变量空间的;只读区是分配常量和程序代码空间的;以及其他一些分区。
例如,如下main.cpp