一般一个我们工程中一个c源文件要有一个对应的头文件。构成一个功能模块。
包含一个头文件功能优点有如下
1、保持定义和声明的一致性
2、使得编译能进行
引言:
我们经常在c工程中发现,源文件中要包含自己的头文件。一直以来,都不知道为什么这样做。
以前的认知:
我认为,.c文件没有必要包含自己的.h文件。.h文件包含.c文件中对外提供定义的函数和全局变量的声明,.h文件就是.c文件提供的对外接口文件。既然.h文件就是.c文件提供的对外接口文件,那么.c文件就没必要包含自己的.h文件了(.h文件是对外提供用的,对内又何必再包含进来呢)。
鉴于这样的理解,我对于工程中.c源文件包含自己的.h头文件很是不理解,不知道为什么要这样做。
现在对此的认知:
但是现在,我知道为什么要源文件包含自己的头文件了。
如下,一段书中的原话:
“如果希望让编译器检查声明的一致性, 一定要把全局声明放到头文件中。特别是, 永远不要把外部模块外部函数的原型(也就是函数声明)放到.c 文件中。这样 通常声明与定义的一致性不能得到检查, 而矛盾*的原型(也就是函数声明)比不用还糟糕。”
注意:外部函数的原型,就是外部函数的声明。
对这段话的理解:
为什么:“永远不要把外部函数的原型放到.c 文件中”
这个外部函数A指的是B.c文件之外定义的函数,A函数定义在a.c文件中;B.c文件中需要使用外部函数A,就需要先对外部函数A声