簡體   English   中英

如何為C中的枚舉賦值?

[英]how to assign a value to a enum in C?

我有一個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)

這個錯誤的原因是什么? 我該如何糾正?

使用你的枚舉為它構建的內容:

static Weekday weekday = {1,TUESDAY};

Lint抱怨是因為你有一個枚舉,但既沒有傳遞枚舉的符號,也沒有兼容類型的演員(如(ThreeDays)2 )。

逐字使用枚舉符號以避免來自Lint的此警告。

從我使用的枚舉開始,你真的不想做你正在嘗試的事情。 它的全部意義在於將其視為一種類型。 類型i表示某種類型的值的順序,這些值僅用int的值表示。 Ints只是分辨不同類型的簡單方法。

例如,您可以在幾周內使用它們

    Enum{
         monday,tuesday, ....
}

通常當我使用它時,它是命名我在節點集合中使用的結構,所以我可以區分我的節點。

將你的枚舉設置為特定的數字有點失敗了目的。 看起來你想要一個最終變量,因為你想在任何你想要的時候引用它。 因此,只需創建一個final int即可獲得該值。

使用文本命名而不是Numerics:

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

您在枚舉時對枚舉的拼寫錯誤。

typedef enum { MONDAY = 1, TUESDAY, WENDESDAY }three; 工作:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM