错误C2236:意外令牌'枚举'

时间:2014-01-08 21:16:16

标签: c++ enums token

我目前正在用C ++开发一个文本冒险游戏,我正在尝试使用枚举来节省代码。但是,我收到了这些错误:

  

1> f:\ ghosthouse \ ghosthouse \ source.cpp(3):错误C2236:意外   令牌'枚举'。你忘记了';'吗?

     

1> f:\ ghosthouse \ ghosthouse \ source.cpp(3):错误C2143:语法错误:   失踪 ';'在'{'

之前      

1> f:\ ghosthouse \ ghosthouse \ source.cpp(3):错误   C2447:'{':缺少函数头(旧式正式列表?)

以下是相关代码:

#include "Header.h"

enum gen_dirs {north, east, south, west};
enum gen_rooms {entrance, bathroom, livingroom, diningroom, abedroom, cupboard, kitchen, cbedroom};
...

相关的头文件:

#define HEADER_H
#include <iostream> // For cin and cout
#include <string> // For strings
#include <vector> // For vectors (arrays)

using namespace std;


struct RoomStruct
{
    // The room the player is currently in, and its interactive objects.
    string roomName;
    string size;
    bool rustyKeyIn;
    bool goldKeyIn;
    bool copperKeyIn;
    bool torchIn;
    bool toyIn;
    bool leverIn;
    bool oldCheeseIn;
    bool toyBoxIn;
    bool skeletonIn;
    bool ghostIn;
}

有人能够弄清楚出了什么问题,因为据我所知(并通过查看其他冒险游戏脚本),这应该有效。

编辑:我是一个大白痴。在标题的最后,我在}之后插入了一个分号,现在运行正常。很抱歉浪费你的时间......

4 个答案:

答案 0 :(得分:1)

我认为你没有显示所有标题。似乎问题出在标题中,因为枚举定义中没有任何语法错误。

尝试编译具有此标题和空主函数的程序。

编辑:您忘记在结构定义后放置分号。

答案 1 :(得分:1)

您在; }之后忘记了RoomStruct

#define HEADER_H
#include <iostream> // For cin and cout
#include <string> // For strings
#include <vector> // For vectors (arrays)

using namespace std;


struct RoomStruct
{
    // The room the player is currently in, and its interactive objects.
    string roomName;
    string size;
    bool rustyKeyIn;
    bool goldKeyIn;
    bool copperKeyIn;
    bool torchIn;
    bool toyIn;
    bool leverIn;
    bool oldCheeseIn;
    bool toyBoxIn;
    bool skeletonIn;
    bool ghostIn;
};  //<---------------------------------

-edit-在C中你可以写struct RoomStruct {int a, b; } room1, room2;所以你的代码中发生了什么,它认为你正在尝试声明一个名为enum的变量,这是一个保留的关键字

分号是很多问题的根源。如有疑问,请检查您是否忘记了分号!

答案 2 :(得分:1)

struct定义需要以分号结尾(即在最后一个大括号之后)。

答案 3 :(得分:0)

你在结构定义的末尾缺少一个分号 - 头文件的最后一行