Таким образом, обычно перечисление предназначено для объявления группы "постоянных целых чисел" как другого типа, который представляет что-то. Например.
enum Color {RED=0, BLUE, YELLOW};
Это ясно. Но недавно я встретил в коде код. Это было в компиляторе для встроенных систем.
enum State {DISABLED=0, ENABLED=!DISABLED};
И это сработало отлично. Он вел себя как булевский тип. Мой вопрос: если он (этот синтаксис) совместим с ANSI?
Если это стандартное соответствие, то почему компиляторы определяли внутренне что-то вроде _Bool для логического представления, а затем в stdbool.h
(для языка C):
#define bool _Bool
... // here goes definitions of true and false
вместо
enum bool {false=0, true=!false};
Что намного чище?