声明为 extern 的对象和变量将在另一个翻译单元或在一个封闭范围中定义的对象声明为具有外部链接。
使用 extern 存储类声明 const 将强制使此变量具有外部链接。 正在定义的翻译单元中允许初始化 extern const 变量。 在正在定义的翻译单元之外的翻译单元中进行初始化将生成未定义的结果。
以下代码显示了两个 extern 声明:DefinedElsewhere(引用在不同翻译单元中定义的名称)和 DefinedHere(引用在封闭范围内定义的名称):
// external.cpp
// defined in another translation unit
extern int DefinedElsewhere;
int main() {
int DefinedHere;
{
// refers to DefinedHere in the enclosing scope
extern int DefinedHere;
}
}