在C中如何给枚举赋值?

igsr9ssn  于 2023-03-07  发布在  其他
关注(0)|答案(4)|浏览(115)

我有一个enum和一个struct,定义如下:

typedef enum
{
   MONDAY = 1,
   TUESDAY,
   WEDNESDAY
} ThreeDays;

typedef struct
{
   int hello;
   ThreeDays day;
} Weekday;

static Weekday weekday = { 1, 2};

然后我在lint中得到了以下错误:

Error 64: Type mismatch (initialization) (int/enum)

这个错误的原因是什么?我该如何更正它?

dohp0rv5

dohp0rv51#

将枚举用于构建它的目的:

static Weekday weekday = {1,TUESDAY};

Lint正在抱怨,因为您有一个枚举,但既没有从枚举传递符号,也没有兼容类型的强制转换(如(ThreeDays)2)。
逐字使用枚举符号以避免Lint发出此警告。

cvxl0en2

cvxl0en22#

从我所使用的enum来看,你并不真的想做你正在尝试的事情,它的全部意义是把它看作一个类型,我所说的类型是指一些类型的值的顺序,这些值只是用int的值来表示的,int只是区分不同类型的简单方法。
例如,您可以将它们用于一周中的几天

Enum{
         monday,tuesday, ....
}

通常我使用它是为了命名我在节点集合中使用的结构体,这样我就可以区分我的节点。
把你的enum设置为特定的数字,有点违背了目的,看起来你想要一个final变量,因为你想在任何时候引用它,所以只要创建一个final int,就可以在任何时候得到那个值。

pgky5nke

pgky5nke3#

使用文本命名而不是数字命名:

use static Weekday weekday = { Mon , Tue , ... } ;
myzjeezk

myzjeezk4#

代码中枚举的拼写不正确。

typedef enum
{
   MONDAY = 1,
   TUESDAY,
   WENDESDAY
} three;

工作:)

相关问题