Mic*_*rst 2 c++ namespaces extern
在这个问题中,我问为什么
//foo.h
namespace foo{
    int bar;
}
Run Code Online (Sandbox Code Playgroud)
当我包含foo.h多个文件时,我给了一个链接器错误.结果我需要extern int bar;防止错误.我为什么需要extern?我不想extern在每个要在多个翻译单元中访问的命名空间中的每个变量之前键入.为什么int bar;不做我所期望的呢?为什么C++标准委员会坚持让我extern到处打字?
Cra*_*sta 10
Extern说变量的存储声明将在别处进行.接着然后链接器在链接时查找另一个文件中的符号.没有extern,你告诉编译器,为全局分配一些空间.如果在多个文件中执行此操作,链接器将看到同一符号的多个实例.