1

在我的 C++ 代码中,我想在文件“B”中使用变量“VarX”,该变量实际上在另一个文件“A”中被修改。所以我看了一下@以下链接并使用了外部概念。

如何使用 extern 在源文件之间共享变量?

错误 LNK2005:“unsigned int VarX”(?VarX@@3IA) 已在 ***.obj 中定义。

我的情况如下:

File1.h
extern unsigned int VarX;

File2.cpp
#include File1.h
unsigned int VarX = 101;

File3.cpp
#include File1.h
unsigned int temp = VarX;

IMP 注意:在头文件 File1.h 中,除了 Extern 定义之外,还有许多其他结构定义和许多其他定义。

有人可以帮助我吗?我该如何读取在另一个文件 File3.cpp 中的 File2.cpp 中修改的 VarX 的值。

4

1 回答 1

1

问题不在于可访问性,而在于多重定义。错误消息很清楚,在您正在重新定义的代码中的某处VarX

常见原因可能是:

  • 无效的构建 - 你在编译之前清理过构建吗?
  • 你有多个unsigned int VarX = 101;或一个unsigned int VarX;地方(在头文件或实现文件中),没有extern声明。
  • #include "File2.cpp"在代码的某个地方,导致它被编译多次。

我的赌注是第二种可能性。

于 2012-04-24T12:54:21.370 回答