我用C++/cocos2dx 遇到了"AppDelegate.obj中已定义的错误".
这是我的代码gamestage.h
#ifndef __GAME_STAGES_H__
#define __GAME_STAGES_H__
// stage 1;
namespace gamestage1
{
int btn_number = 9;
}
#endif
Run Code Online (Sandbox Code Playgroud)
game.cpp
并menu.cpp
使用此gamestage.h
文件,没有gamestage.cpp
文件.
实际上,我尝试使用extern
如下:
extern int btn_number = 9;
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
*这会导致什么?*
您不应在头文件中定义变量,并在多个翻译单元中包含该标头.它打破了One定义规则,从而打破了错误.
请记住,标题保护可以防止在同一个翻译单元中多次包含标题,而不是在不同的翻译单元中.
如果要跨多个翻译单元共享相同的全局变量,则需要使用extern
.
//gameplan.h
// stage 1;
namespace gamestage1
{
extern int btn_number;
}
Run Code Online (Sandbox Code Playgroud)
//game.cpp
#include "gameplan.h"
namespace gamestage1
{
int btn_number = 9;
}
Run Code Online (Sandbox Code Playgroud)
//menu.cpp
#include "gameplan.h"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1893 次 |
最近记录: |