枚举 Header 多个定义
Enum Header Multiple Defnitions
我遇到了这个 "multiple Definitions" 错误,但不知道该由谁来解决。
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 。错误。
您应该在 header:
中声明全局变量 extern
#ifndef HEADER_H
#definde HEADER_H
enum Gamestate{
MENU,
PLAY,
PAUSE,
GAMEOVER
};
extern Gamestate GAMESTATE;
#endif
并在您的任何 .cpp
文件中提供定义:
Gamestate GAMESTATE = MENU;
表示header "header.h"被包含在多个编译单元中
在这种情况下,变量 GAMESTATE 在包含 header.
的每个模块中定义
您应该按以下方式在 header 中声明没有定义的变量
extern Gamestate GAMESTATE;
然后在 main.cpp 中定义为
Gamestate GAMESTATE = MENU;
我遇到了这个 "multiple Definitions" 错误,但不知道该由谁来解决。
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 。错误。
您应该在 header:
中声明全局变量extern
#ifndef HEADER_H
#definde HEADER_H
enum Gamestate{
MENU,
PLAY,
PAUSE,
GAMEOVER
};
extern Gamestate GAMESTATE;
#endif
并在您的任何 .cpp
文件中提供定义:
Gamestate GAMESTATE = MENU;
表示header "header.h"被包含在多个编译单元中
在这种情况下,变量 GAMESTATE 在包含 header.
的每个模块中定义您应该按以下方式在 header 中声明没有定义的变量
extern Gamestate GAMESTATE;
然后在 main.cpp 中定义为
Gamestate GAMESTATE = MENU;