//main.cpp
#include <iostream>
#include "worldActions.h"
using namespace std;
bool worldEvents = false;
void worldReactions(bool world);
int main (int argc, const char * argv[])
{
while (true)
{
if (worldAction == true)
{
worldEvents = true;
worldReactions(worldEvents);
}
else
{
worldEvents = false;
break;
}
}
return 0;
}
//1.cpp
#include <iostream>
#include "worldActions.h"
using namespace std;
bool worldAction;
//页眉
#ifndef worldActions_h
#define worldActions_h
bool worldAction = true;
#endif /* defined(__asdf_Story__worldActions__) */
当使用extern时,我会收到链接错误,当它不是时,我会收到重新定义错误。如何解决此问题,以便可以使用全局布尔值?
在标头中使用extern bool worldAction;
并将定义放在 cpp 文件中。
您当前正在将全局worldAction
编译到包含标头的每个文件中。 如果多个文件包含标头,或者(如在源文件中(任何其他文件定义了具有相同名称的变量,则会收到链接器错误。
要解决此问题,请将标头更改为仅声明变量
#ifndef worldActions_h
#define worldActions_h
extern bool worldAction;
#endif /* defined(__Julian_Story__worldActions__) */
并在源文件中定义/初始化它
#include <iostream>
#include "worldActions.h"
using namespace std;
bool worldAction = true;
使用关键字extern
,如extern bool worldAction;
& put 定义bool worldAction = true
.cpp