将枚举值与枚举实例进行比较

时间:2011-03-04 07:30:36

标签: c

为什么不能这样做?

    #include<stdio.h>
    #include<stdlib.h>
    struct test
    {
        value z;
        int x;
    };

    main()
    {
        enum value {a,b,c,d};
        struct test come;
        come.z = 2;
        if (a == z) printf("they match ");
        else printf("dont match");
    }

2 个答案:

答案 0 :(得分:2)

使枚举成为一个typedef枚举并将其放在结构上方。

#include <stdio.h>
#include <stdlib.h>

typedef enum { a,b,c,d } value;

struct test
{
  value z;
  int x;
};

int main()
{
  struct test come;
  come.z = 2;

  if (a == come.z)
    printf("they match ");
  else
    printf("dont match");
}

编辑:修正了一些小错字。

答案 1 :(得分:0)

  • 您不需要#include <stdlib.h>
  • value未定义
  • z本身不存在。它仅作为struct test
  • 的成员存在

这样做(我添加了空格,删除了stdlib,将value更改为int,将返回类型和参数信息添加到main,更改了if中的z,添加了' \ n'到版画,并添加了return 0;):

#include <stdio.h>

struct test
{
    int z;
    int x;
};

int main(void)
{
    enum value {a, b, c, d};
    struct test come;
    come.z = 2;
    if (a == come.z) printf("they match\n");
    else printf("don't match\n");
    return 0;
}

enum value的定义确实应该在任何函数之外。