Определение 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.