8.15 头文件之间的依赖关系
头文件的意义
模块的封装:接口的声明
系统层次:模块的依赖的关系
打印xxx.c文件的依赖
gcc -MM xxx.c 不打印库
gcc -M
头文件包含顺序
#include <C标准库头文件>
#include <系统头文件>
#include “第三方库头文件"
#include “低层模块头文件"
#include “本模块相关头文件"
头文件的自包含
减少头文件的包含顺序依赖
– 任何一个头文件,都可以独立编译、拿来就用
– 想包含student.h,不用考虑是否将person.h包含进来
– 头文件包含哪些头文件,取决于自身,而非源文件
– 源文件包含哪些头文件,取决于自身,而非头文件
缺点
增加依赖关系、使模块之间的依赖关系变得复杂
增加项目的编译时间
减少头文件之间的依赖
前向声明
- 若能前向声明,头文件中尽量少包含其它头文件
- 只需要某个数据类型,而不是其完整的定义
指针对象的声明
函数参数类型
函数返回值类型
建立共享base.h文件
保存公用的数据类型