繁体   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