2

我在C++/cocos2dx中遇到了“AppDelegate.obj 中已经定义的错误” 。
这是我的代码gamestage.h

#ifndef __GAME_STAGES_H__
#define __GAME_STAGES_H__

// stage 1;
namespace gamestage1
{
    int btn_number = 9;
}

#endif

game.cppmenu.cpp使用这个gamestage.h文件,没有gamestage.cpp文件。

实际上,我尝试使用extern如下:

extern int btn_number = 9;

但它没有用。

*是什么原因造成的?*

4

1 回答 1

9

您不应在头文件中定义变量并将该头文件包含在多个翻译单元中。它打破了一个定义规则,因此出现了错误。
请记住,标头保护可防止将标头多次包含在同一个翻译单元中,而不是在不同的翻译单元中。

如果您想在多个翻译单元之间共享同一个全局变量,那么您需要使用extern.

//gameplan.h

// stage 1;
namespace gamestage1
{
    extern int btn_number;
}

//游戏.cpp

#include "gameplan.h"
namespace gamestage1
{
    int btn_number = 9;
}

//菜单.cpp

#include "gameplan.h"
于 2013-05-11T05:03:32.937 回答