Могу ли я всегда предполагать, что sizeof (GUID) == 16?

Определение GUID в заголовке окна выглядит так:

typedef struct _GUID {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID;

Однако никакая упаковка не определена. Поскольку выравнивание элементов структуры зависит от реализации компилятора, можно подумать, что эта структура может быть длиннее 16 байт.

Если я могу предположить, что это всегда 16 байт - мой код, использующий идентификаторы GUID, более эффективен и прост.Однако это было бы совершенно небезопасно - если компилятор по какой-то причине добавит некоторые отступы между членами.

Мои вопросы существуют ли потенциальные причины? Или вероятность сценария, что sizeof (GUID)! = 16 на самом деле 0.

5
задан JE42 4 August 2011 в 22:57
поделиться