В msdn для опции компилятора cl / Zp упоминается, что «упаковывает структуры на 8-байтовых границах (по умолчанию)». Означает ли это, что если существует тип данных размером> 8 байт, по умолчанию (без параметра компилятора или пакета прагмы) он не будет естественным образом выровнен и скорее будет иметь 8-байтовое выравнивание. Если да, то это случай с GCC / Clang?
Я проверил на GCC, используя -fpack-struct
а также __uint128_t
, что у него нет таких по умолчанию. Например sizeof(tStruct)
32 и 24:
struct tStruct {
uint64_t a;
__uint128_t b;
};
Я не могу проверить то же самое на окнах, поскольку он не обеспечивает какой-либо тип данных> 8 байт.
Задача ещё не решена.