我是阿梁,最近在负责的项目代码,也算是祖传代码了,里面有很多头文件嵌套的情况,即a.h包含b.h,b.h又包含c.h,c.h又包含d.h......遂找到一份华子的C语言编程规范学习一下,并结合自己的理解写成这篇文章,以规范自己的代码。
1. 头文件嵌套的缺点
依赖:若x.h包含了y.h,则称作x依赖于y,依赖关系会进行传导,如x.h包含y.h,而y.h又包含了z.h,则x.h通过y.h依赖了z.h,依赖将导致编译时间的上升,虽然依赖是不可避免的,但是不良的设计会导致系统的依赖关系无比复杂,使得任意一个文件的修改都要重新编译整个系统,导致编译时间太长。
比如一个 .c 文件包含了 aa.h,一旦 aa.h 被修改,任何直接或间接包含 aa.h 的代码都需要重新编译,如果 aa.h 又包含了 bb.h,那么bb.h 的任何改变都将导致所有包含了 aa.h 的代码重新编译,这就是头文件嵌套导致的编译时间上升的原因。
在一个良好的系统中,修改一个文件,只需要重新编译数个甚至一个文件。
2. 几条规则
以下几条规则可以帮助我们避免不合理的头文件设计:
2.1 头文件放置接口的声明,不适合放置接口实现
头文件是模块的对外接口,头文件中应放置对外部的声明,如对外