Для C++ до 2011 года стандарт говорит, что перечисления могут быть любого размера, от байта до долгого. Но на практике большинство компиляторов делают их ints, 4 байта.Enum Размер * на практике *
Итак, на практике делать какие-либо смутные текущие компиляторы, не делать их ints?
И мне, кажется, нужно уточнить, что я не делаю ничего странного, как перечисления> 2^31. Просто простые перечисления. А на 32 или 64-битных системах мое программное обеспечение не будет работать на 16 бит!
'int' это не обязательно 4 байта. – user657267
'enum/* class */MyEnum: unsigned char {...};'. В компиляторе C99 один из моих клиентов сообщил об ошибке, которая сводилась к несвязанному модулю, предполагая размер enum = sizeof UINT32. –
... и байт не обязательно 8 бит. –