![](/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.