一个C程序可能是由多个分别编译的部分组成,这些不同部分通过一个通常叫做链接器(或连接器,载入器)的程序合并成一个整体。因为编译器一般每次只处理一个文件,所以它不能检测出那些需要一次了解多个源程序文件才能察觉的错误。而且,在许多系统中链接器是独立于C语言实现的,因此如果前述错误的原因与C语言相关,链接器对此也同样束手无策。某些C语言实现提供了一个称为lint的程序,可以捕获到大量的此类错误,但遗憾的是并非全部的C语言实现都提供了该程序。如果能够找到诸如lint的程序,就一定善加利用,这一点无论怎么强调都不为过。
 
 
        C语言中的一个重要思想就是分别编译(Separate Compilation),即若干个源程序可以在不同的时候单独进行编译,然后在恰当的时候整合到一起。但是,链接器一般是与C编译器分离的,它不可能了解C语言的诸多细节。那么,链接器是如何做到把若干个C源程序合并成一个整体呢?尽管链接器并不理解C语言,然而它却能够理解机器语言和内存布局。编译器的责任就是把C源程序“翻译”成对链接器有意义的形式,这样链接器就能够“读懂”C源程序了。中国IC网