为什么不能这样做?
#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");
}
答案 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
的定义确实应该在任何函数之外。