4

私はとを次のようenumstruct定義しています:

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

それが構築された目的のために列挙型を使用してください:

static Weekday weekday = {1,TUESDAY};

Lintは、列挙型があるために文句を言っていますが、列挙型からシンボルを渡しておらず、互換性のあるタイプのキャスト(など(ThreeDays)2)も渡していません。

Lintからのこの警告を回避するには、列挙型記号を逐語的に使用します。

于 2012-11-22T10:38:24.463 に答える
1

私が列挙型を使用したことから、あなたは本当にあなたがしようとしていることをしたくありません。それの要点は、実際にはそれをタイプとして見ることです。タイプとは、intの値で表されるあるタイプの値の順序を意味します。Intsは、さまざまなタイプを区別するための簡単な方法です。

たとえば、あなたはそれらを何週間にもわたって使うことができます

    Enum{
         monday,tuesday, ....
}

通常、これを使用するときは、ノードのコレクションで使用している構造体に名前を付けて、ノードを区別できるようにします。

列挙型を特定の数値に設定すると、目的が少し損なわれます。必要なときにいつでも参照したいので、最終変数が必要と思われる場合。したがって、最終的なintを作成して、いつでもその値を取得します。

于 2012-11-22T11:29:14.527 に答える
-1

数値の代わりにテキストによる命名を使用します。

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

列挙型のスペルがコードで正しくありません。

typedef enum { MONDAY = 1, TUESDAY, WENDESDAY }three; 働く :)

于 2012-11-22T10:03:55.193 に答える