首页 > 解决方案 > 不同文件之间的共享全局变量

问题描述

在将其标记为重复之前,我已经尝试过“公共标头 + 外部变量”方法。

链接

在 A.cpp(或)B.cpp 中写入,

int gVariable = 10;

请记住只在一个源文件中写入上述定义,否则如果您在两个源文件中都写入,链接器会报错多个符号。

而在A.cpp、B.cpp的通用头文件中,

extern int gVariable;

在此示例中,当我想将 B.cpp 包含到 A.cpp 中(在 A.cpp 中使用 B.cpp 函数)时,它将不起作用。一个例子是here

谢谢

标签: c++

解决方案


您在 test.h 和 shared.h 中使用相同的包含防护

#ifndef SHARED_H //
#define SHARED_H //

extern int testVar;
#endif /*SHARED_H*/

此外,您没有包括test.hin test.cpp,也没有实际定义testVar

#include "test.h"

int testVar = 0;

void toOne() {
    testVar = 1;
}

https://onlinegdb.com/vCXz53DtJ

KamilCuk 正确地指出以双下划线开头的符号是保留符号,所以我还更改了您的包含警卫


推荐阅读