2013-06-22 35 views
1

得到了所有的工作,感谢]C,结构内枚举,错误C2016,头文件

代码

enum genre {A, B, C, D, E}; 

struct recipe 
{ 
    genre category; 
    char name[50]; 
    char ingredients[50]; 
    char instruction[1000]; 
}; 


void menu(); 
void file_check(char *name); 

错误:

error C2016: C requires that a struct or union has at least one member 
error C2061: syntax error : identifier 'genre' 
error C2059: syntax error : '}' 

这是我的头文件。我想不通想从我这里编译:(我认为它会以这种方式工作

+0

你认为你正在用某种C++编译器编译C语言。在C中,当引用'genre'名称时,_need_ {struct,union,enum}标记。 – wildplasser

+0

可能的重复:http://stackoverflow.com/questions/1102542/how-to-define-an-enumerated-type-enum-in-c – Steve

+0

我建议你看看如何typedef枚举。看到这个http://stackoverflow.com/questions/1102542/how-to-define-an-enumerated-type-enum-in-c –

回答

5

C要求你使用:的

enum genre category; 

代替

genre category; 

要使用genre category声明,你需要typedef

typedef enum {A, B, C, D, E} genre; 

,而不是

enum genre {A, B, C, D, E}; 
+0

这是一个明确的答案,struct包含变量声明'流派类别;'不是适当的宣言 – 0decimal0

0

C语言要求标识符为struct/enum/union类型,在每个要使用它的地方都有它的类型。为避免每次都输入,可以使用typedef关键字。