7

我想在两个 cpp 文件(A.cpp 和 B.cpp)之间共享(全球化)一些向量变量(V1 和 V2)。我已经通过以下命令在 Ah 中定义了 V1 和 V2。

extern vector<uint64_t> V1;
extern vector<uint64_t> V2;

我还在 A.cpp 和 B.CPP 文件中添加了#include "Ah"。谁能让我知道我还应该做什么才能访问这两个 CPP 文件中的 V1 和 V2 的元素?

提前致谢

4

3 回答 3

10

首先,您需要选择应该定义向量的位置。假设您选择A.cpp.

A.cpp(仅在一个文件中 - 在多个文件中定义相同对象将产生多个定义符号错误)向量定义为全局变量:

 vector<uint64_t> V1;
 vector<uint64_t> V2;

B.cpp(以及您要访问的所有其他文件中V1V2将向量声明extern为. 这将告诉链接器在别处搜索实际对象:

 extern vector<uint64_t> V1;
 extern vector<uint64_t> V2;

现在,在链接步骤中V1,and V2fromB.cpp将连接到V1and V2from A.cpp(或任何这些对象被定义的地方)。

于 2013-05-02T22:30:10.793 回答
2

extern意味着这只是声明变量,而不是定义它们。您需要在某个源文件(而不是标题)的某处对这些变量进行一个定义。DEFINITION 看起来与 DECLARATION 完全相同,但没有extern

于 2013-05-02T22:33:40.230 回答
2

你已经在你的头文件中创建了一个声明;现在您需要在单个编译单元(.cpp 文件)中创建定义。

所以选择一个 .cpp 文件,并将定义放在那里。在这种情况下,定义与声明相同,只是没有extern关键字。

vector<uint64_t> V1;
vector<uint64_t> V2;
于 2013-05-02T22:33:54.137 回答