#include <stdio.h>

struct __attribute__((__packed__)) {
    unsigned char ch8;
    unsigned short sh16;
    unsigned int l32;
}mystruct1 = { 0xAA, 0xBBBB, 0xCCCCCCCC };

struct __attribute__((__packed__)){
    unsigned char ch8_1;
    unsigned short sh16;
    unsigned char ch8_2;
    unsigned int l32;
}mystruct2 = { 0x11, 0x2222, 0x11, 0x33333333 };

struct{
    unsigned char ch8_1;
    unsigned char ch8_2;
    unsigned short sh16;
    unsigned int l32;
}mystruct3 = { 0x11, 0x11, 0x2222, 0x33333333 };

struct{
    unsigned short sh16;    
    unsigned char ch8;
    unsigned int l32;
}mystruct4 = { 0xBBBB, 0xAA, 0xCCCCCCCC };

void main(void) {    
    unsigned int struct_size1;
    unsigned int struct_size2;
    unsigned int struct_size3;
    unsigned int struct_size4;
    // size here is 8 byte.
    struct_size1 = sizeof(mystruct1);
    struct_size2 = sizeof(mystruct2);
    struct_size3 = sizeof(mystruct3);
    struct_size4 = sizeof(mystruct4);
    printf("%d %d %d %d", struct_size1, struct_size2 , struct_size3, struct_size4 );
}
