簡體   English   中英

C 警告:枚舉類型與另一種類型混合

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

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