我有两个头文件,我需要头文件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]也写了不同的字符串。
那我该怎么做?
答案 0 :(得分:6)
你应该
.cpp
中定义它们而不是像现在这样.h
。.h
.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文件而不是头文件。