
在函数的声明中,多文件的好处是将函数的声明和定义分离了,这里我们以一个10w块的游戏引擎为例,说说这种好处在实际情况下的表现。
比如说在未来就业以后,你已经是个非常厉害的程序员了,平时上班的任务很快就完成了,下班后有充裕的时间,所以你利用下班空余设计了一个很强的游戏引擎。不久后,就有买家来找你了,问你这个游戏引擎怎么卖,你大手一挥,一年10w,你只负责期间的维护。
当你们商谈好之后,准备交代码给别人用的时候,你难道希望别人能看到代码的细节吗? 你定好的价格只是想让别人使用,但是不想让别人知道你代码的实现细节,这个时候,函数的声明和定义的分离就非常重要,你把定义隐藏起来,但总要把声明给别人吧。这样别人用的时候只知道函数的参数,名字,返回类型,但是函数的定义,不告诉他,只给他用,那么这里怎么隐藏呢?
比如说你写的这个游戏叫add,文件里现在随便放个代码
add.h

add.c

这里只想让他看到头文件里的信息,而不是add.c里的信息,怎么操作?
这个时候就可以把代码编译出一个静态库的东西


点击应用,确定。返回去运行程序的话,就会生成一个.lib的文件

这个就是所谓的静态库,可以找到对应的路径看一下

这里可以用记事本随便什么的打开,可以发现看不懂,全部都是乱码

这个时候把它卖给别人也看不懂呀,所以就可以把这个add.h和add.lib卖给别人
再以买家的视角来看,买回来了add.lib和头文件,这里把买回来的add.lib放到test_05_03_01里

然后把add.h加到头文件里,运行

这里发现还是发生了报错,买回来之后也有错

实际上不是买的东西有问题,而是方法错了,这里需要导入静态库,就需要加这样一串代码
//导入静态库
#pragam comment(lib,"add.lib")
之前放进去的程序是一个加法计算程序,可以发现导入静态库后就可以正常运行了,买家就可以用了,买家也可以从头文件里知道他买的库里面有什么样的函数,有什么样的功能,卖家也可以在头文件里多备注一些信息,但就不告诉函数是怎么实现的。
这就是函数声明和定义分离的一个好处,当把声明和定义搅和在一起是做不到这样的事情的。