我有一个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)
这个错误的原因是什么?我该如何更正它?
4条答案
按热度按时间dohp0rv51#
将枚举用于构建它的目的:
Lint正在抱怨,因为您有一个枚举,但既没有从枚举传递符号,也没有兼容类型的强制转换(如
(ThreeDays)2
)。逐字使用枚举符号以避免Lint发出此警告。
cvxl0en22#
从我所使用的enum来看,你并不真的想做你正在尝试的事情,它的全部意义是把它看作一个类型,我所说的类型是指一些类型的值的顺序,这些值只是用int的值来表示的,int只是区分不同类型的简单方法。
例如,您可以将它们用于一周中的几天
通常我使用它是为了命名我在节点集合中使用的结构体,这样我就可以区分我的节点。
把你的enum设置为特定的数字,有点违背了目的,看起来你想要一个final变量,因为你想在任何时候引用它,所以只要创建一个final int,就可以在任何时候得到那个值。
pgky5nke3#
使用文本命名而不是数字命名:
myzjeezk4#
代码中枚举的拼写不正确。
工作:)