如何从一个 .h 获取 int 到另一个 .h

How to get int's from one .h to another .h

本文关键字:获取 int 另一个 一个      更新时间:2023-10-16

我有两个头文件,我需要头文件 1 中的一些变量。以下是一些可以提供帮助的信息。

int SelRace, ...
char Race[80], ...

这两个来自头文件 1,我需要头文件 2 中的这些值跟随 if() 语句。在头文件 1 中,SelRace 被分配了 1、2 或 3,完成后我尝试再次调用它。这是头文件 2 中需要它的地方。

while (1)
{
    if(SelRace == 1)
    {
        cout << "[text here]" << endl;
    }
        else if(SelRace == 2)
    {
        cout << "[text here]" << endl;
    }
        else if(SelRace == 3)
    {
        cout << "[text here]" << endl;
    }
        else
    {
        cout << endl;
    }
}

种族[80]将在[此处文本]的不同位置重印,因为我尚未填写。根据 SelRace 的值,Race[80] 也写入了不同的字符串。

那么我该怎么做呢?

你应该

  • .cpp中定义它们,而不是像现在所做的那样.h
  • .h中将它们声明为外部
  • 在第二.cpp中包含上述.h

步骤 2 和 3 可以通过在 billz 建议的.cpp中将它们声明为 extern 来合并,具体取决于您期望使用这些全局变量的范围。

不应将变量定义放在头文件中。如果这样做,则不能将它们包含在多个源文件中,因为变量将具有多个定义。

而是将定义放在源文件中,将声明放在头文件中。然后,可以将头文件包含在需要使用变量的所有源文件中。

声明应为extern声明,例如:

extern int SelRace;
extern char Race[80];

extern 关键字告诉编译器变量是在另一个位置定义的,因此链接器可以正确引用它。

您可以在一个头文件中定义一个 extern 变量,然后在另一个头文件中使用它,如下所示

extern int SelRace;

在头文件中,仅声明函数原型。将定义放在 cpp 文件中并确保只有一个定义,但如果需要使用变量,请使用extern

一.cpp

int SelRace, ...
char Race[80], ...

另一个.cpp

extern int SelRace, ...
extern char Race[80], ...

具有while loop的函数定义应转到 cpp 文件而不是头文件。