[英]C warning : enumerated type mixed with another type
我有一個這樣定義的枚舉 -
typedef enum
{
emp1 = 0u,
emp2,
emp3
}employid;
C 對以下操作發出警告
問題1:
unsigned int var; // 32 bit in my compiler
typedef struct
{
employid e;
}mystruct;
mystruct s;
s.e = var; // **getting warning enumerated type mixed with another type**
問題2:
somefun(var); // **getting warning enumerated type mixed with another type**
function definition is somefun(employ e);
我不明白即使我的 enum 值是正的,因為第一個元素是 0u 為什么 C 編譯器向我大喊把它分配給一個 unsigned int ?
請不要拋出另一個 SO 鏈接,我在發布此之前經歷了 100 多個 SO 問題!
就 C 語言規則而言,您的代碼很好。 這些只是額外的診斷信息,告訴您代碼是可疑的。
unsigned int
可能保存與任何有效枚舉常量不匹配的值,在這種情況下,您最終會得到se
保存無效值。 也就是說:在大多數情況下,將普通整數與枚舉混合實際上沒有任何意義。 如果您發現自己這樣做了,那么根本問題很可能出在程序設計層面。
如果您確定var
具有 ok 值,您可以執行顯式se = (employid)var;
. 但更有可能的是, var
應該被聲明為employid
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.