#include <stdio.h>
#include <stdint.h>
static union { uint32_t x; uint16_t y[3]; } __attribute__((packed)) u;
static uint64_t x;
int main(void)
{
printf("sizeof uint16_t : %zu\n", sizeof(uint16_t)); printf("sizeof uint32_t : %zu\n", sizeof(uint32_t)); printf("sizeof int : %zu\n", sizeof(int)); printf("sizeof union u : %zu\n", sizeof(u
));
printf("&x : %p\n", (void *)&x
); printf("&u : %p\n", (void *)&u
); printf("Addrr difference : %zu\n", (uint8_t *)&x
> (uint8_t *)&u
? (uint8_t *)&x
- (uint8_t *)&u
: (uint8_t *)&u
- (uint8_t *)&x
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCnN0YXRpYyB1bmlvbiB7IHVpbnQzMl90IHg7IHVpbnQxNl90IHlbM107IH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgIHU7CnN0YXRpYyB1aW50NjRfdCB4OwoKCgppbnQgbWFpbih2b2lkKSAKewoJcHJpbnRmKCJzaXplb2YgdWludDE2X3QgOiAlenVcbiIsIHNpemVvZih1aW50MTZfdCkpOwoJcHJpbnRmKCJzaXplb2YgdWludDMyX3QgOiAlenVcbiIsIHNpemVvZih1aW50MzJfdCkpOwoJcHJpbnRmKCJzaXplb2YgaW50IDogJXp1XG4iLCBzaXplb2YoaW50KSk7CglwcmludGYoInNpemVvZiB1bmlvbiB1IDogJXp1XG4iLCBzaXplb2YodSkpOwoJCgkKCXByaW50ZigiJnggOiAlcFxuIiwgKHZvaWQgKikmeCk7CglwcmludGYoIiZ1IDogJXBcbiIsICh2b2lkICopJnUpOwoJcHJpbnRmKCJBZGRyciBkaWZmZXJlbmNlIDogJXp1XG4iLCAodWludDhfdCAqKSZ4ID4gKHVpbnQ4X3QgKikmdSA/ICh1aW50OF90ICopJnggLSAodWludDhfdCAqKSZ1IDogKHVpbnQ4X3QgKikmdSAtICh1aW50OF90ICopJngpOwoJcmV0dXJuIDA7Cn0K