![](/img/trans.png)
[英]Why do I get a warning trying to pass a 'char (*c)[6]' to a function expecting a 'const char (*c)[6]'?
[英]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.