2

//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 时会出现链接错误,不使用时会出现重新定义错误。我该如何解决这个问题,以便我可以使用全局布尔值?

4

3 回答 3

6

extern bool worldAction;在标头中使用并将定义放在 cpp 文件中。

于 2013-07-26T16:01:28.040 回答
2

您当前正在将全局编译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;
于 2013-07-26T16:01:23.350 回答
0

使用关键字externlike extern bool worldAction;& 将定义bool worldAction = true放在 .cpp 文件中

于 2013-07-26T16:17:31.427 回答