1

我有两个头文件,我需要头文件 2 中的头文件 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;
    }
}

Race[80] 将在 [text here] 中的各个点重印,因为我还没有填写这些内容。根据 SelRace 的值,Race[80] 也写入了不同的字符串。

那么我该怎么做呢?

4

4 回答 4

6

你应该

  • 将它们定义为 a.cpp而不是.h您现在所做的 a。
  • 在 a 中将它们声明为 extern.h
  • 将上述内容包含.h在第 2 项中.cpp

步骤 2 和 3 可以通过将它们声明为 extern 来合并,.cpp正如 billz 所建议的那样,这取决于您希望使用这些全局变量的范围。

于 2013-01-31T09:14:43.747 回答
2

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

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

声明应该是一个声明,extern例如:

extern int SelRace;
extern char Race[80];

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

于 2013-01-31T09:14:53.267 回答
1

您可以在一个头文件中定义一个外部变量并在另一个头文件中使用它,如下所示

extern int SelRace;
于 2013-01-31T09:14:48.710 回答
0

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

一.cpp

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

另一个.cpp

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

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

于 2013-01-31T09:15:10.097 回答