4

我有一个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

4 回答 4

7

Use your enum for what it was built for:

static Weekday weekday = {1,TUESDAY};

Lint is complaining because you have an enum, but are neither passing a symbol from the enum, nor a cast of a compatible type (such as (ThreeDays)2).

Use the enum symbols verbatim to avoid this warning from Lint.

于 2012-11-22T10:38:24.463 回答
1

从我使用的枚举来看,你真的不想做你正在尝试的事情。它的全部意义在于将其视为一种类型。我所说的类型是指某种类型的值的顺序,这些值仅用整数的值表示。整数只是区分不同类型的简单方法。

例如,您可以在一周中的几天使用它们

    Enum{
         monday,tuesday, ....
}

通常当我使用它时,它是命名我在节点集合中使用的结构,以便我可以区分我的节点。

将您的枚举设置为特定数字有点违背目的。对于看起来你想要一个最终变量,因为你想在你想要的时候引用它。因此,只需创建一个最终 int 即可获得该值。

于 2012-11-22T11:29:14.527 回答
-1

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

use static Weekday weekday = { Mon , Tue , ... } ;
于 2012-11-22T10:06:28.237 回答
-3

您在代码中对 enum 的拼写不正确。

typedef enum { MONDAY = 1, TUESDAY, WENDESDAY }three; 在职的 :)

于 2012-11-22T10:03:55.193 回答