视觉获取链接错误:C++中的外部.如何访问在文件 A 中修改的变量的值.CPP在另一个文件 B .CPP中修改

visual Getting LINK error : Extern in C++. How to access the value of a variable which is modified in File A.CPP in another file File B.CPP

本文关键字:文件 修改 CPP 变量 访问 另一个 错误 链接 获取 C++ 外部      更新时间:2023-10-16

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

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

错误 LNK2005:"无符号 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 定义之外,还有许多其他结构定义和许多其他定义。

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

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

常见原因可能是:

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

我赌的是第二种可能性。