簡體   English   中英

將數字傳遞給期望枚舉的函數時,為什么沒有得到錯誤(或至少警告)?

[英]Why am I not getting an error (or at least warning) when I pass a number to a function that is expecting an enum?

我將gcc用於ARM Cortex M4並執行以下操作:

uint32_t SetGyroInterruptBits(enum Gyr_Int_Set_Bits BitMap)
{
//    Code Here
return RelevantValue;

}

我創建了如下枚舉:

enum Gyr_Int_Set_Bits 
{
    HR_FILT = 0x80,
    AM_FILT = 0x40,
    HR_Z_AXIS = 0x20,
    HR_Y_AXIS = 0x10,
    HR_X_AXIS = 0x08,
    AM_Z_AXIS = 0x04,
    AM_Y_AXIS = 0x02,
    AM_X_AXIS = 0x01,
};

當我如下調用此函數時:

SetGyroInterruptBits(34);

我希望至少得到一個警告,告訴我我應該通過一個枚舉。 但是,它可以完全愉快地編譯。 我認為這是枚舉相對於僅使用#define的優勢。 是您必須專門要求編譯器進行檢查還是只是誤解我的警告? 在這種情況下使用#define是否一樣好?

在C中,枚舉只是int類型的符號編譯時常量。 您可以將任何 int值分配給枚舉,即使它不是該枚舉的有效值。

傳遞整數值34與傳遞HR_Z_AXIS | AM_Y_AXIS HR_Z_AXIS | AM_Y_AXIS

暫無
暫無

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

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