C ++在多个文件中使用布尔值

时间:2013-07-26 16:00:10

标签: c++ global-variables

// 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时我得到链接错误,当它不是我得到重新定义错误。我怎么能解决这个问题,所以我可以使用全局布尔值?

3 个答案:

答案 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文件中