Featured post
c++ - Enumeration type comparison error -
typedef enum { type_a = 0, type_b, type_c } objtype;
assume there enum type above.
i'm using arm-g++ working.
and macro type defined this:
#define any_type ((objtype)-1)
but following comparision false tested:
if (param->type == any_type) something(); else error();
param->type set any_type , type objtype. logged both of them '%d' , displayed 255. it's false , error occurred.
this problem has been not caused rvct (commercial arm compiler).
why fail?
-1 illegal value enumeration.
the language standard (7.2 enumeration declarations) says:
for enumeration emin smallest enumerator , emax largest, values of enumeration values of underlying type in range bmin bmax, bmin , bmax are, respectively, smallest , largest values of smallest bit-field can store emin , emax.
according this, legal values 0, 1, 2 , 3 (those values can represented 2 bits). should add any_type
enumerator use it.
- Get link
- X
- Other Apps
Comments
Post a Comment