【问题标题】:C, enum within struct, error C2016, header fileC、结构内的枚举、错误 C2016、头文件
【发布时间】:2013-06-19 12:47:54
【问题描述】:

搞定了,谢谢大家;]

代码

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 : '}'

这是我的头文件。我不知道编译器想从我这里得到什么:(我认为它会这样工作

【问题讨论】:

  • 您假设您正在使用某种 C++ 编译器编译 C。在 C 中,当引用 genre 名称时,您需要 {struct,union,enum} 标记。
  • 我建议你看看如何 typedef 一个枚举。看到这个stackoverflow.com/questions/1102542/…
  • struct
  • 另请注意,char[1000] 太小,无法存储食谱(至少对于海鲜饭而言):P

标签: c header-files


【解决方案1】:

C 要求你使用:

enum genre category;

而不是

genre category;

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

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

而不是

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

【讨论】:

  • 这是一个明确的答案,结构包含变量声明genre category; 不是正确的声明
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-21
    • 2012-03-02
    • 2021-05-21
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    相关资源
    最近更新 更多