在this问题我问为什么
//foo.h
namespace foo{
int bar;
}
当我在多个文件中包含 foo.h
时出现链接器错误。结果我需要 extern int bar;
来防止错误。为什么我需要 extern
?我不想在我想在多个翻译单元中访问的每个 namespace 中的每个变量之前键入 extern
。为什么 int bar;
没有按照我的预期进行?为什么 C++ 标准委员会坚持让我在任何地方都键入 extern
?
最佳答案
Extern 表示变量的存储声明将在别处进行。链接器然后在链接时去另一个文件中查找符号。没有 extern 你是在告诉编译器,为全局分配一些空间。如果您在多个文件中执行此操作,链接器将看到同一符号的多个实例。
关于c++ - 为什么我们需要外部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12763352/