连接
(将C程序的若干部分分别进行编译,最后整合起来)
1.连接器
连接器通常把目标模块看成是由一组外部对象组成的。其输入为一组目标模块和库文件,输出为一个载入模块。
2.声明与定义
声明:为变量分配地址,而不分配存储空间;
定义:为变量分配地址和存储空间。
在变量前加extern表示对变量的引用
变量可进行多次声明,但只能定义一次。
3.命名冲突与static修饰符
在变量(函数)前加static关键词,可以有效地减少命名冲突。它将变量(函数)的作用域限制在一个源文件内,对于其它源文件,该变量(函数)不可见。
若一个函数仅被同一源文件的其它函数调用,则应将其声明为static.
4.形参、实参与返回值
任何C函数都有一个形参列表,列表中的每个参数都是一个变量,该变量在函数调用的过程中被初始化。
函数调用时,调用方将实参列表传递给被调函数;若形参列表为空,在被调用时实参列表也为空。
任何一个C函数都有返回类型,要么为void,要么是函数生成结果的类型。
若任何一个函数在调用它的每个文件中,都在第一次被调用之前进行声明或定义,那么就不会出现任何与返回类型相关的麻烦。
如果一个函数在被定义或声明之前被调用,那么它的返回类型默认为整型。
5.检查外部类型
同一个外部变量名,不能在两个不同的文件中被声明为不同的类型。即,要保证一个特定名称的所有外部定义在每个目标模块中都有相同的类型
6.头文件
避免外部变量同名不同类型的规则:每个外部变量只在头文件声明。注意,定义该外部对象的模块也应该包括这个头文件。