在同一个源文件中,你想要定义多少个函数,就可以定义多个函数,并且可以把它们都包含到一个库中——然而,在小组开发环境中连接程序和共享源文件时,这种编程风格存在着严重的缺陷。
当你在一个源文件中包含多个库函数时,这些函数会被编译到同一个目标(.obj)文件中。当连接程序要把其中的一个函数连接到程序中去时,目标文件中的所有函数都将被连接进来---不管程序是否用到它们。如果这些函数是无关的(在它们的定义中没有相互调用),那么会因为把不需要的代码连接进来而浪费宝贵的程序空间,见18.7中的例子。这就是要把库函数放到各自的源文件中的原因之一。
另一个原因是为了在小组开发环境下便于进行代码共享。使用独立的源文件能使小组程序员上交和收回单独一个函数,而不必先锁住源文件中的一些函数,然后才能修改源文件中的其它函数。
建立一个数据库是为了把可重复使用的函数放在一起,供其它程序员和程序共享。例如,你的几个程序可能都会用到一些通用的功能函数,你不必在每个程序中都复制这些源代码,而只需把这些函数集中到一个函数库中,然后用连接程序把它们连接到你的程序中去。这种方法有利于程序的维护,因为你可以在一个集中的地方而不是几个分散的地方维护你的函数。
如果你在小组环境中工作,那么你应该把你的可重复使用的函数放到一个库中,这样其它小组成员就可以把你的函数连接到他们的程序中去,从而节省了他们复制或从头开始写这些函数的时间。此外,在一个包含几个模块的大项目中,可以把那些自始至终都要用到的“框架”支持函数包含到一个库中。
编译程序中包含一个库管理器(通常叫做LIB.EXE或其它类似的名字),可用来在函数库中增减目标代码模块(.obj)。有些编译程序允许你在它们的集成开发环境中维护你的库,而不必人为地启动库管理器。无论如何,你都应该参考一下18.7和18.8。其中有一些有关建库的重要信息和有用的技巧。