模块之间和之间的名称可见性
Linkage 是指程序的一个或多个模块之间的变量,对象或过程的名称的可见性。换句话说,一个联系指示如何在模块之间共享一个名称。名称可以有两种主要的联动类型:
internal 和
external .
内部联动
internal linkage 的名称仅指在自己的模块中定义的变量,对象或过程;它们对于其他模块不可见。这意味着两个或更多的模块可以使用相同的名称来引用不同的东西。请注意,链接仅指名称的可见性,并且根据存储类和生命周期,具有内部链接的变量,对象或过程可以使用其地址在模块之间共享。
模块范围声明
本地范围声明
在本地范围(例如
Do循环或过程体)中声明的所有变量和对象名称都具有内部链接。
外部联动
具有
external linkage 的名称可以指在其模块内或另一个模块中定义的变量,对象或过程。具有外部链接意味着其他模块可以看到一个名称,所有使用相同外部名称的模块都引用相同的变量,对象或过程。因此,只有一个模块可以定义一个外部名称(编译器会抱怨一个重复的定义,如果它找到具有外部链接的名称的附加定义)。
模块范围声明
本地范围声明
目前,在local-scope中声明的名称不能有外部链接。