外部联系是什么意思?

What does external linkage mean

本文关键字:意思 是什么 联系 外部      更新时间:2023-10-16

考虑以下代码:

#include <stdio.h>
namespace EnclosingNmspc
{
    namespace Nmspc
    {
        extern int a;//This a and the a defined above denote the same entity
        int a=5;
    }
}
extern int a;
int main()
{ 
    printf("%dn",a);
}

这是3.5/2的报价:

当一个名称具有外部链接时,它所表示的实体可以是从其他翻译单位的范围或从的名称引用同一翻译单元的其他作用域。

我不明白为什么这个规则对我不起作用?我有undefined reference链接错误

你的问题已经在那里得到了典型的回答。

您在不同的编译单元中缺少::a的定义。

int a=5;实际上在同一范围内定义了extern int a;。但是不能用

访问
printf("%dn",a);
主程序中的

。要检查名称空间中的内容,请尝试

printf("%dn",EnclosingNmspc::Nmspc::a);