c++ - 不同文件之间的共享全局变量
问题描述
在将其标记为重复之前,我已经尝试过“公共标头 + 外部变量”方法。
从链接:
在 A.cpp(或)B.cpp 中写入,
int gVariable = 10;
请记住只在一个源文件中写入上述定义,否则如果您在两个源文件中都写入,链接器会报错多个符号。
而在A.cpp、B.cpp的通用头文件中,
extern int gVariable;
在此示例中,当我想将 B.cpp 包含到 A.cpp 中(在 A.cpp 中使用 B.cpp 函数)时,它将不起作用。一个例子是here
谢谢
解决方案
您在 test.h 和 shared.h 中使用相同的包含防护
#ifndef SHARED_H //
#define SHARED_H //
extern int testVar;
#endif /*SHARED_H*/
此外,您没有包括test.h
in test.cpp
,也没有实际定义testVar
#include "test.h"
int testVar = 0;
void toOne() {
testVar = 1;
}
https://onlinegdb.com/vCXz53DtJ
KamilCuk 正确地指出以双下划线开头的符号是保留符号,所以我还更改了您的包含警卫
推荐阅读
- javascript - 如何使用 svelte 将其余道具传递给 HTML 元素?
- python - 在 scikit-learn 的 RandomizedSearchCV 中使用保持集进行验证?
- python - 创建/注册 PySpark UDF 并将其应用于一列
- jquery - 通过 AJAX 将大型数组传递给 .Net Core 操作的问题
- reactjs - Redux 商店在页面更改时不断重置
- c++ - 通过 COM 端口将数据写入旧版软件?
- mysql - 如果值不在另一个表中,则在一个表中插入该值
- node.js - Mongoose 中的实用模式设计,用于主页中的文章/主题列表以及每个完整的详细文章/主题
- r - 根据条件组合和复制行
- python - Numpy:为什么我不能将一个矩阵分配给另一个矩阵的索引部分?