sizeof (struct) diferente para diferentes compiladores

Supongamos que tengo un 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));
}

Tengo diferentes resultados para clang en Mac (2) y alguien me dijo en Windows que regresó (3). No estoy seguro si lo entiendo bien, pero veo que mientras el primer compilador comprime la estructura a 9 + 7 = 16 bits, el otro usa 16 bits de uint16_t y 8 de uint8_t. ¿Podrias aconsejar?

Respuestas a la pregunta(2)

Su respuesta a la pregunta