我想在两个 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 的元素?
提前致谢
首先,您需要选择应该定义向量的位置。假设您选择A.cpp
.
在A.cpp
(仅在一个文件中 - 在多个文件中定义相同对象将产生多个定义符号错误)将向量定义为全局变量:
vector<uint64_t> V1;
vector<uint64_t> V2;
在B.cpp
(以及您要访问的所有其他文件中V1
)V2
将向量声明extern
为. 这将告诉链接器在别处搜索实际对象:
extern vector<uint64_t> V1;
extern vector<uint64_t> V2;
现在,在链接步骤中V1
,and V2
fromB.cpp
将连接到V1
and V2
from A.cpp
(或任何这些对象被定义的地方)。
extern
意味着这只是声明变量,而不是定义它们。您需要在某个源文件(而不是标题)的某处对这些变量进行一个定义。DEFINITION 看起来与 DECLARATION 完全相同,但没有extern
你已经在你的头文件中创建了一个声明;现在您需要在单个编译单元(.cpp 文件)中创建定义。
所以选择一个 .cpp 文件,并将定义放在那里。在这种情况下,定义与声明相同,只是没有extern
关键字。
vector<uint64_t> V1;
vector<uint64_t> V2;