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 に答える