为什么我们需要外课
Why do we need extern?
在这个问题中,我问为什么
//foo.h
namespace foo{
int bar;
}
当我在多个文件中包含foo.h
时,给了我一个链接器错误。事实证明,我需要extern int bar;
来防止错误。为什么我需要extern
?我不想在我想在多个翻译单元中访问的每个命名空间中的每个变量之前键入 extern
。为什么int bar;
不按照我的期望去做?为什么C++标准委员会坚持让我到处打字extern
?
Extern 表示,变量的存储声明将在其他地方进行。然后,链接器在链接时在另一个文件中查找符号。如果没有 extern,您正在告诉编译器,为全局分配一些空间。如果在多个文件中执行此操作,链接器将看到同一符号的多个实例。
为什么C++标准委员会坚持让我输入外实习生 到处?
它从来没有告诉到处写....
namespace foo{
extern "C++" {
int bar;
int car;
int dar;
int xar;
}
}
相关文章:
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 为什么我们要为avl树实现返回一个指向节点的指针,而不是void函数
- 为什么我们将单个或多维数组的大小声明为常量值?
- 为什么我们不能重复使用具有不同模板参数的别名模板标识符?
- 为什么当我们有常量引用时创建临时对象?
- 为什么我们再次从结构对象创建结构变量?
- 为什么我们不编写可以处理C++标识符的汇编器和链接器?
- 为什么我们在C++中使用手动复制构造函数?
- 为什么我们使用在C++中返回数据结构的函数?
- 为什么我们要做"INT_MAX/10"而不仅仅是INT_MAX?
- 为什么我们不在下面给出的代码中使用指针来实例化C++的实体对象?
- 为什么我们将 [ ] 与指向数组的指针一起使用?
- 为什么我们需要在链接列表链接之前填写数据?
- (为什么)我们可以在初始化中将非静态类成员分配给静态变量吗?
- 我们为什么使用概念和约束
- 简单明了,我们为什么要使用_stdcall
- 当使用cout和cin时,"<<"和">>"运算符在做什么,我们为什么要使用它们?
- 我们为什么要使用内存管理器
- 我们为什么要使用"using namespace std"?我们可以改用 #include< conio.h>吗?
- 在C++中使用之前,我们为什么以及何时必须初始化字符串