1. 链接属性
当组成一个程序的各个源文件分别被编译之后,所有的目标文件以及那些从一个或多个函数库中引用的函数将链接在一起,形成可执行程序。然而,如果相同的标识符出现在几个不同的源文件中时,它们是表示同一个实体,还是表示不同的实体?标识符的链接属性决定如何处理在不同文件中出现的标识符。标识符的作用域与它的链接属性有关,但这两个属性并不相同
链接属性一共有 3 种:external
(外部)、internal
(内部)、none
(无)
没有链接属性的标识符(none
)总是被当作单独的个体,也就是说该标识符的多个声明被当作不同的独立实体
属于 internal
链接属性的标识符在同一个源文件内的所有声明中都指同一个实体,但位于不同源文件的多个声明则分属不同的实体
属于 external
链接属性的标识符不论声明多少次,位于几个源文件都表示同一个实体
在缺省(默认)情况下,全局变量和函数声明的链接属性都为 external
,而其他的标识符的链接属性为 none
具有 external
链接属性的函数也称为外部函数
1.1 例1
typedef char *a