获取LINK错误:C ++中的Extern。如何在另一个文件文件B.CPP中访问文件A.CPP中修改的变量的值

时间:2012-04-24 12:43:03

标签: c++ visual-c++ linker-errors extern

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

How do I use extern to share variables between source files?

  

错误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定义之外,还有许多其他结构定义以及许多其他定义。

有人可以帮助我。我如何读取另一个File File3.cpp中File2.cpp中修改的VarX的值。

1 个答案:

答案 0 :(得分:1)

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

常见原因可能是:

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

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