c++ - 为什么我们需要外部?

标签 c++ namespaces extern

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/

相关文章:

c++ - 类模板的静态方法的奇怪问题

c++ - 当我知道传入的类型时,完美转发的最佳方式是什么

c++ - 如何在 C++ 中创建 "undo"?

java - 使接口(interface)程序化而不是语义化是什么意思?

c++ - 避免为单个 header 重新定义变量

c++ - 使用 extern 引用在不同编译单元中定义的函数

c++ - 什么需要我声明 "using namespace std;"?

xml - 如何使用 XPath 忽略 namespace

外部声明的全局对象的 C++ 链接器错误

c++ - 编译C程序时出错,该程序调用在头文件中声明并在单独的cpp文件中定义的C++函数