枚举 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;