我已经得到了这个"多个定义"错误,并且不知道修复者。
header.h
#ifndef HEADER_H
#definde HEADER_H
enum Gamestate{
MENU,
PLAY,
PAUSE,
GAMEOVER
};
Gamestate GAMESTATE = MENU;
#endif
的main.cpp
#include "header.h"
switch(GAMESTATE){...}
如果我把Gamestate GAMESTATE = MENU;在header.cpp中,main.cpp不知道变量。如果我这样编译它我得到多个Def。错误。
答案 0 :(得分:2)
您应该在标题中声明全局变量extern
:
#ifndef HEADER_H
#definde HEADER_H
enum Gamestate{
MENU,
PLAY,
PAUSE,
GAMEOVER
};
extern Gamestate GAMESTATE;
#endif
并在您的.cpp
个文件中提供定义:
Gamestate GAMESTATE = MENU;
答案 1 :(得分:1)
这意味着标题“header.h”包含在多个编译单元中。
在这种情况下,变量GAMESTATE在包含标题的每个模块中定义。
您应该按照以下方式在标题中声明变量而不使用其定义
extern Gamestate GAMESTATE;
然后例如在main.cpp中将其定义为
Gamestate GAMESTATE = MENU;