[英]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.