链接

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

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

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

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

秘密的附加模块

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

<iostream.h> 与 <iostream>的区别

#include <iostream.h>

相当于

#include <iostream>

using namespace std;

以后可能会关注的

1. 程序的链接过程

转载于:https://www.cnblogs.com/hdtianfu/archive/2011/12/02/2272797.html

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

  1. javascript进阶教程第二章对象案例实战

    javascript进阶教程第二章对象案例实战 一.学习任务 通过几个案例练习回顾学过的知识 通过案例练习补充几个之前没有见到或者虽然讲过单是讲的不仔细的知识点. 二.具体实例 温馨提示 面向对象的知 ...

  2. 第二章 Caché JSON 创建和修改动态实体

    文章目录 第二章 Caché JSON 创建和修改动态实体 使用JSON文字构造器 使用动态表达式和点语法 使用点语法创建动态对象属性 使用点语法创建动态数组元素 使用 %Set(), %Get(), ...

  3. 第二章 - 线程的创建

    第二章 - 线程的创建 文章目录 第二章 - 线程的创建 1.创建和运行线程 方法一:直接使用Thread 方法二:使用Runnable配合Thread (推荐) 方法二的简化:使用lambda表达式 ...

  4. 【Filecoin源码仓库全解析】第二章:如何创建账户钱包并获取FIL Mock代币

    欢迎大家来到第二章,经过 前章<[Filecoin源码仓库全解析]第一章:搭建Filecoin测试节点>的内容阅读后,我们应该已经具备在自己的机器上部署Filecoin测试节点的能力,本章 ...

  5. 深入了解java虚拟机(JVM) 第四章 对象的创建

    一.对象的创建过程 对象的创建过程大致可以分为六步,其中对象的分配尤为重要: 二.对象分配内存 一般来说对象分配内存有两种方式: 第一种是指针碰撞,这是一种比较理想的方式:如果Java堆是绝对规整的: ...

  6. 并发编程基础篇——第二章(如何创建线程)

    上节讲了基础概念,本章正式进入线程专题,对基础薄弱的同学可以好好看本章!! 1.Thread匿名子类 我们可以通过下面的代码来直接创建一个线程. // 构造方法的参数是给线程指定名字,推荐 Threa ...

  7. 第二章 第三节 创建第一个程序

    第三节 创建第一个程序 返回目录 启动Eclipse的时候,您会看到工作区(workspace),它是工程的容器.在初始的工作区中没有任何工程,如图2-2. 图2-2  Eclipse主窗口 没有工程 ...

  8. Unity学习笔记第二章:如何创建一个2D游戏

    ps:发文章只是为了稳固自己的学习记录一下,如果有什么错误麻烦多指教 目前学习到了自己的第一个2D游戏,记录一下大概流程以及Sprite的操作 1:地形的创建设置以及Sprite的操作: 创建地形这块 ...

  9. 【3DMax简易入门教程】(二) 第二章 ·3DMax下的基本体创建

    3dMax第二章:基本体创建 1.标准基本体与扩展基本体组成了图形构建的主要内容,可以利用基本体内容创建桌子.电脑.沙发.凳子.门窗等内容.这里我用线条创建一个窗户框架和垃圾桶. 2.利用样条线创建一 ...

  10. 第二章 装配Bean(Spring in action,3th)

                                         第二章 装配Bean 创建应用对象之间协作关系的行为通常被称为装配(wiring),是依赖注入的本质. XML方式声明Bean ...

最新文章

  1. R.Java文件报错
  2. mysql指定当前时间为默认时间_MySQL设置当前时间为默认值的方法
  3. cocos2dx在eclipse环境下集成ucsdk
  4. mysql存储过程number类型_MySQL存储过程的基本函数(三)
  5. orcle与mysql的区别_Orcle与MySQL的SQL语法区别:
  6. html笔记(三)html5+css3(html5、css3、文字相关)
  7. C/C++ 面试题记录
  8. 一起Polyfill系列:让Date识别ISO 8601日期时间格式
  9. 虚拟机安装 xp步骤(参照百度文库)
  10. 十字路口待转区什么用_左转待转区,到底怎样掉头?
  11. hdu 2149+hdu 1846(巴什博弈)
  12. html如何加入浮动客服,css如何实现客服悬浮效果
  13. JAVA集成腾讯云即时通讯IM服务端
  14. springcloud 微服务的组成部分
  15. 批量搜狗提交软件-让搜狗快速收录你的网站
  16. 摩拜单车骑行数据探索性分析【实战总结】
  17. (有小案例)初始Mybatis框架及使用
  18. J2me xmlReader的轻量级实现
  19. 地鼠宝宝的轶事奇闻之并发初探
  20. 1.01.21盒子模型,浮动,定位

热门文章

  1. 用户信息填写web代码_zabbix监控系列之监控项(8、web监控)
  2. Struts2之类型转换中的错误
  3. caffe MNISTAutoencoder
  4. Numpy系列(一)array对象以及创建array的方法总结
  5. 对抗搜索之【最大最小搜索】【Alpha-Beta剪枝搜索】
  6. http://visualgo.net/ 数据结构可视化。。。。
  7. 设计模式12——代理模式
  8. Pycharm新建文件时头部模板的配置方法
  9. ES6-字符串扩展-padStart(),padEnd()
  10. iOS开发GCD(3)-数据安全