C陷阱与缺陷第四章 连接

1.什么是连接器
连接器把若干个C源程序合并成一个整体;典型的连接器把编译器生成的若干个目标模块,整合成一个被称为载入模块或可执行文件的 实体,该实体能够被操作系统直接执行。
连接器通常把目标模块看成是由一组外部对象组成的,禁止同一个载入模块中的两个不同外部对象拥有相同的名称。

2.声明与定义
int a; 如果其位置出现在所有的函数体之外,那么它就被称为外部对象a的定义,同时为a分配了存储空间,初始值默认为0;
extern int a; 不是对a的定义,说明a的存储空间是在程序的其他地方分配的。

  1. 命名冲突与static修饰符
    如果两个不同的源文件中都包括了定义 int a,它表示程序错误,或者在两个源文件中共享a的同一个实例;
    static int a; a的作用域限制在一个源文件内,对其他源文件,a是不可见的。

4.检查外部类型
保证一个特定名称的所有外部定义在每个目标模块中都有相同的类型
比如:char fie[] = “abcd”; //文件1
extern char file[]; //文件2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值