Какова структура упаковки по умолчанию с использованием cl/gcc/clang?

В 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 байт.

0 ответов

Другие вопросы по тегам