// 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时我得到链接错误,当它不是我得到重新定义错误。我怎么能解决这个问题,所以我可以使用全局布尔值?
答案 0 :(得分:6)
您在标题中使用extern bool worldAction;
并将定义放在cpp文件中。
答案 1 :(得分:1)
您当前正在为包含标题的每个文件编译全局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;
答案 2 :(得分:0)
使用关键字extern
,例如extern bool worldAction;
&amp;将定义bool worldAction = true
放在.cpp文件中