从另一个源文件 C++ 访问变量?

gac*_*acl 2 c++ header-files

我正在努力避免上课,所以请记住这一点。

我想知道如何从另一个 .cpp 文件访问变量。

无论出于何种原因,当我尝试将变量包含在“codeReferences.h”头文件中时,我都会收到 LNK 2005 错误。所以我想知道如果没有在全局使用的头文件中定义它(导致错误),如何从另一个 .cpp 文件访问变量。

所有答案均表示赞赏。

Ale*_*ler 6

LNK2005表示同一个符号有多个定义。

您需要了解声明和定义之间的区别:

  • 当您声明变量时,您只需告诉编译器有一个名称(=符号)和该符号的类型。
  • 当您为变量分配具体值或为其提供实现时,您就可以定义它(例如,在函数的情况下)。

一个符号可以有任意数量的声明,但它只能有一个定义。另请参阅此主题:C++ 中的一个定义规则到底是什么?

如果你想在多个.cpp文件中使用相同的符号(指代同一个对象),那么你需要extern在头文件中使用关键字:

例子:

/** header.h **/
extern int i;
Run Code Online (Sandbox Code Playgroud)

您可以在任意数量的 .cpp 文件中包含此标头以引入符号i。您必须仅在一个 .cpp 中指定定义i

/** code.cpp **/
#include "header.h"
int i; // this is a definition, even if you do not initialize here.
Run Code Online (Sandbox Code Playgroud)