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

时间:2013-01-31 09:12:22

标签: c++ variables header-files

我有两个头文件,我需要头文件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 个答案:

答案 0 :(得分:6)

你应该

  • .cpp中定义它们而不是像现在这样.h
  • .h
  • 中将其声明为extern
  • 在第二个.h
  • 中加入.cpp以上

第2步和第3步可以通过在.cpp中将其声明为extern来合并,因为billz建议,取决于您期望使用这些全局变量的广泛程度。

答案 1 :(得分:2)

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

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

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

extern int SelRace;
extern char Race[80];

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

答案 2 :(得分:1)

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

extern int SelRace;

答案 3 :(得分:0)

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

one.cpp

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

another.cpp

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

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