C陷阱与缺陷第四章 连接
2017-07-24 13:14
218 查看
1.什么是连接器
连接器把若干个C源程序合并成一个整体;典型的连接器把编译器生成的若干个目标模块,整合成一个被称为载入模块或可执行文件的 实体,该实体能够被操作系统直接执行。
连接器通常把目标模块看成是由一组外部对象组成的,禁止同一个载入模块中的两个不同外部对象拥有相同的名称。
2.声明与定义
int a; 如果其位置出现在所有的函数体之外,那么它就被称为外部对象a的定义,同时为a分配了存储空间,初始值默认为0;
extern int a; 不是对a的定义,说明a的存储空间是在程序的其他地方分配的。
命名冲突与static修饰符
如果两个不同的源文件中都包括了定义 int a,它表示程序错误,或者在两个源文件中共享a的同一个实例;
static int a; a的作用域限制在一个源文件内,对其他源文件,a是不可见的。
4.检查外部类型
保证一个特定名称的所有外部定义在每个目标模块中都有相同的类型
比如:char fie[] = “abcd”; //文件1
extern char file[]; //文件2
连接器把若干个C源程序合并成一个整体;典型的连接器把编译器生成的若干个目标模块,整合成一个被称为载入模块或可执行文件的 实体,该实体能够被操作系统直接执行。
连接器通常把目标模块看成是由一组外部对象组成的,禁止同一个载入模块中的两个不同外部对象拥有相同的名称。
2.声明与定义
int a; 如果其位置出现在所有的函数体之外,那么它就被称为外部对象a的定义,同时为a分配了存储空间,初始值默认为0;
extern int a; 不是对a的定义,说明a的存储空间是在程序的其他地方分配的。
命名冲突与static修饰符
如果两个不同的源文件中都包括了定义 int a,它表示程序错误,或者在两个源文件中共享a的同一个实例;
static int a; a的作用域限制在一个源文件内,对其他源文件,a是不可见的。
4.检查外部类型
保证一个特定名称的所有外部定义在每个目标模块中都有相同的类型
比如:char fie[] = “abcd”; //文件1
extern char file[]; //文件2
相关文章推荐
- c缺陷与陷阱笔记-第四章 连接
- C陷阱与缺陷(四)连接
- 《C陷阱与缺陷》学习笔记总结:词法陷阱、语法陷阱、语义陷阱,连接、库函数、预处理器、可移植性缺陷及其他
- C陷阱与缺陷-连接
- 读C陷阱与缺陷笔记(第四章)
- 【C陷阱和缺陷】连接
- SQL SERVER 2012 第四章 连接 JOIN の INNER JOIN
- C语言陷阱和缺陷
- SQL SERVER 2012 第四章 连接 JOIN语句的早期语法结构 & 联合UNION
- Entity Framework 4 in Action读书笔记——第四章:使用LINQ to Entities查询:排序和连接数据
- c陷阱与缺陷——陷阱
- C陷阱和缺陷(C Traps and Pitfalls)-读书笔记
- 读书笔记--C陷阱与缺陷(四)
- C缺陷与陷阱(四)边界计算与不对称边界
- C语言缺陷与陷阱(6)
- 读书笔记--C陷阱与缺陷(七)
- C与指针、C陷阱与缺陷
- c陷阱与缺陷 语法陷阱有感
- 【JAVA陷阱与缺陷-->规则】(三)高级篇
- C语言陷阱和缺陷