Thinking in C++ ----第二章 对象的创建和使用

链接

CC++要对函数和变量进行外部引用时,根据引用情况,连接器会选择两种处理方法中的一种。如果还未遇到过这个函数或变量的定义,连接器会把它的标识符加到“未解析引用”列表中。如果链接器遇到过函数或变量定义,那么这就是已解决的引用。

如果链接器在目标模块列表中不能找到函数或变量的定义,它将去查找库。库有多种索引方式,连接器不必到库里查找所有目标模块,而只需浏览索引。当链接器在库中找到定义后,就将整个目标模块而不仅仅是函数定义链接到可执行程序。注意,仅仅是库中包含所需定义的目标模块加入链接,而不是整个库参加链接。如果想尽量减小程序的大小,当构造自己的库时,可以考虑一个源文件只放一个函数。

因为链接器按照指定的顺序查找文件,所以,如果用户使用与库函数同名的函数,并把带有这个函数的文件插入到库文件名列表之前,就能用他自己的函数取代库函数。由于在找到库文件之前,链接器已经先用用户给定的函数来解释引用,因此被使用的是用户的函数而不是库函数。

如果要使用附加的库必须把该库文件名添加到链接器处理的列表文件中。

 

秘密的附加模块

当创建一个C/C++可执行程序时,链接器会秘密链接某些模块。其中之一是启动模块,它包含了对程序的初始化例程。初始化例程是开始执行C/C++程序时必须首先执行的一段程序。初始化例程建立堆栈,并初始化程序中的某些变量。

<iostream.h> <iostream>的区别

 

#include <iostream.h>

相当于

#include <iostream>

using namespace std;

 

 以后可能会关注的

   1. 程序的链接过程

posted on 2011-12-02 22:52  sanlo  阅读(226)  评论(0编辑  收藏  举报