#include <stdio.h>
#include <stdint.h>
#define _packed __attribute__((packed))
_packed struct
{
uint8_t x1;
_packed int x2;
_packed uint8_t x3[ 2 ] ;
_packed int x4;
} byte_int;
int main( void ) {
printf ( "%p %p %p %p\n " , & byte_int.
x1 , & byte_int.
x2 , & byte_int.
x3 , & byte_int.
x4 ) ; printf ( "%u %u %u %u\n " , ( unsigned int ) & byte_int.
x1 , ( unsigned int ) & byte_int.
x2 , ( unsigned int ) & byte_int.
x3 , ( unsigned int ) & byte_int.
x4 ) ; // I know it is an UB just to show the op in dec - easier to spot the odd and the even addresses
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCiNkZWZpbmUgX3BhY2tlZCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQoKCl9wYWNrZWQgc3RydWN0IAp7Cgl1aW50OF90IHgxOwkKCV9wYWNrZWQgaW50IHgyOwoJX3BhY2tlZCB1aW50OF90IHgzWzJdOwoJX3BhY2tlZCBpbnQgeDQ7CgkKfWJ5dGVfaW50OwoKaW50IG1haW4odm9pZCkgewoJcHJpbnRmKCIlcCAlcCAlcCAlcFxuIiwgJmJ5dGVfaW50LngxLCAmYnl0ZV9pbnQueDIsICZieXRlX2ludC54MywgJmJ5dGVfaW50Lng0KTsKCXByaW50ZigiJXUgJXUgJXUgJXVcbiIsICh1bnNpZ25lZCBpbnQpJmJ5dGVfaW50LngxLCAodW5zaWduZWQgaW50KSZieXRlX2ludC54MiwgKHVuc2lnbmVkIGludCkmYnl0ZV9pbnQueDMsICh1bnNpZ25lZCBpbnQpJmJ5dGVfaW50Lng0KTsJLy8gSSBrbm93IGl0IGlzIGFuIFVCIGp1c3QgdG8gc2hvdyB0aGUgb3AgaW4gZGVjIC0gZWFzaWVyIHRvIHNwb3QgdGhlIG9kZCBhbmQgdGhlIGV2ZW4gYWRkcmVzc2VzCgkKCXJldHVybiAwOwp9Cg==