Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 多个C++;文件夹_C++_Variables - Fatal编程技术网

C++ 多个C++;文件夹

C++ 多个C++;文件夹,c++,variables,C++,Variables,我想在两个cpp文件(A.cpp和B.cpp)之间共享(全球化)一些向量变量(V1和V2)。 我已经通过以下命令在A.h中定义了V1和V2 extern vector<uint64_t> V1; extern vector<uint64_t> V2; extern向量V1; 外向量V2; 我还向A.cpp和B.cpp文件中添加了#include“A.h”。有人能告诉我,要访问这两个CPP文件中的V1和V2元素,我还应该做些什么吗 提前感谢首先,您需要选择应该定义向量的

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

extern vector<uint64_t> V1;
extern vector<uint64_t> V2;
extern向量V1;
外向量V2;
我还向A.cpp和B.cpp文件中添加了#include“A.h”。有人能告诉我,要访问这两个CPP文件中的V1和V2元素,我还应该做些什么吗


提前感谢

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

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

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

现在,在链接步骤中,来自
B.cpp
V1
V2
将连接到
V1
和来自
A.cpp
V2
(或者这些对象定义在哪里)。

extern
意味着这只声明变量,不定义变量。在某些源文件(而不是头文件)的某个地方,您只需要这些变量的一个定义。定义看起来与没有外部声明的声明完全相同,因为您已经在头文件中创建了声明;现在需要在单个编译单元(.cpp文件)中创建定义

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

vector<uint64_t> V1;
vector<uint64_t> V2;
向量V1;
矢量V2;

更好的做法是,将声明放在包含在所有编译单元(包括包含定义的编译单元)中的标题中。这样编译器就可以检查定义和声明是否匹配。
vector<uint64_t> V1;
vector<uint64_t> V2;