Меня интересует выравнивание типов uint32_t на 64-битных платформах. Спецификация говорит, что uint32_t должен быть точно заданной битовой шириной, которая действительно кажется:
> printf("sizeof(uint32_t): %zd\n", sizeof(uint32_t));
sizeof(uint32_t): 4
Но тогда у меня есть структура:
typedef struct A {
uint32_t a;
uint32_t b;
} A;
Но, на удивление:
> printf("sizeof(A): %zd\n", sizeof(A));
sizeof(A): 16
Является ли uint32_t 8-байтовым по какой-либо причине? Это действительно 8-байтовый тип внизу?