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-> type был установлен как ANY_TYPE, а его тип был OBJTYPE. Я зарегистрировал их обоих с "% d", и они отображались как 255. Но это ложь, и произошла ошибка.
Эта проблема не была вызвана RVCT (коммерческим компилятором arm).
Почему не получается?