typedef enum {
TYPE_A = 0,
TYPE_B,
TYPE_C
} OBJTYPE;
假设有上面的枚举类型。
我正在使用arm-g ++进行工作。枚举类型比较错误
而一些宏对于任何类型的定义如下:
#define ANY_TYPE ((OBJTYPE)-1)
但以下对比是假如我测试:
if (param->type == ANY_TYPE) something();
else error();
param->类型设定为ANY_TYPE和它的类型是OBJTYPE。我用'%d'记录了他们两个,他们显示为255.但是这是错误的,并且发生了错误。
此问题并非由RVCT(商业arm编译器)引起的。
它为什么失败?
将'ANY_TYPE = -1'添加到枚举中有什么问题,BTW?哦,全帽标识符是一个宏指示。 – sbi 2010-12-20 09:09:29
我认为(OBJTYPE)-1被解释为一个减法,不像'(OBJTYPE)( - 1)'。 – Benoit 2010-12-20 09:14:26