如何在C中使用枚举



基本上,我们必须为餐厅等候队列实现一个队列(链表(。

我们使用enum会获得额外积分,但我以前从未使用过。我想知道这个看起来对吗我是怎么用的?我查了一下,但没有看到任何使用链表的例子。

以下是我们的结构说明:

在编写代码时,必须为等待列表的链表中的节点创建一个C结构。这些数据项必须包括以下内容(如果需要,还可以包括其他内容(。

  • 组的名称

  • 指定组大小的整数变量(组中的人数(

  • 餐厅内状态(使用枚举可获得额外积分!(

  • 指向列表中下一个节点的指针

餐厅状态为未预约或来电(提前打电话将姓名列入等候名单(

这是我的结构:

typedef struct restaurant
{
    char name[30];
    int groupSize;
    enum status{call, wait};
    struct restaurant *nextNode;
}list;

我这么问是因为我在编译时收到了这个警告

lab6.c:11:28: warning: declaration does not declare anything [enabled by default]

您的struct-typedef基本上是在说"如果我的记录中有一个"status"字段,它可能有值"call"或值"wait"。警告基本上是说"您从未分配过字段"。

可能的变化:

enum status {CALL, WAIT};
typedef struct restaurant
{
    char name[30];
    int groupSize;
    enum status my_status;
    struct restaurant *nextNode;
}list;

以下是更多信息:

  • 如何在C中定义枚举类型(enum(

您的enum必须在结构外部声明:

enum Status {call, wait};
typedef struct restaurant
{
    char name[30];
    int groupSize;
    struct restaurant *nextNode;
} list;

或者必须在结构内声明该类型的成员:

typedef struct restaurant
{
    char name[30];
    int groupSize;
    enum Status {call, wait} status;
    struct restaurant *nextNode;
} list;

或两者兼有:

enum Status {call, wait};
typedef struct restaurant
{
    char name[30];
    int groupSize;
    enum Status status;
    struct restaurant *nextNode;
} list;

您也可以为enum Status创建一个typedef。由于标记(如enum Status中的Status(与结构成员位于不同的命名空间中,因此实际上可以使用:

enum status {call, wait} status;

编译器不会混淆,但你可能会混淆。

通常,人们在ALL_CAPS中编写枚举常量。这在一定程度上是使用#define WAIT 0#define CALL 1而不是enum Status { WAIT, CALL };的遗留问题。

相关内容

  • 没有找到相关文章

最新更新