Упаковка перечислений с использованием компилятора MSVC ++ - PullRequest
1 голос
/ 08 мая 2009

С помощью GCC я могу выполнить упаковку перечислений с использованием атрибута (( pack )), но, похоже, самая близкая вещь в MSVC, #pragma pack, не работает с перечислениями , Кто-нибудь знает способ упаковки перечислений в 1 байт вместо обычного целочисленного размера?

1 Ответ

2 голосов
/ 08 мая 2009

Это специфично для MSVC:

// instances of this enum are packed into 1 unsigned char
// warning C4480: nonstandard extension used
enum foo : unsigned char { first, second, last }; 
assert(sizeof(foo) == sizeof(unsigned char));

// instances of this enum have the common size of 1 int
enum bar { alpha, beta, gamma };
assert(sizeof(bar) == sizeof(int));

Для справки смотрите здесь: MSDN -> enum

...