sizeof (struct) diferente para diferentes compiladores
Supondo que eu tenha um código como este:
#include <stdio.h>
#include <stdint.h>
int main(int argc, char *argv[]) {
typedef struct{
uint16_t x : 9;
uint8_t y : 7;
} z;
printf("sizeof(z) = %lu\n",sizeof(z));
}
Eu tenho resultados diferentes para clang no Mac (2) e alguém me disse no Windows que ele retornou (3). Não tenho certeza se entendi bem, mas vejo que, enquanto o primeiro compilador compacta a estrutura para 9 + 7 = 16 bits, o outro usa 16 bits de uint16_t e 8 de uint8_t. Você poderia aconselhar?