#include <stdio.h>
#define STATIC_ASSERT(COND) typedef char static_assertion_##__LINE__[(COND) ? 1 : -1]
#define ENSURE_SIZE(structure, size) STATIC_ASSERT(sizeof(structure) == size)
typedef struct
{
unsigned a;
} foo;
ENSURE_SIZE(foo, sizeof(unsigned));
int main(void) {
unsigned local_a = 0;
foo *f = (foo *)(&local_a);
printf("address local_a: %X, f->a: %X\n", &local_a
, &f
->a
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNUQVRJQ19BU1NFUlQoQ09ORCkgdHlwZWRlZiBjaGFyIHN0YXRpY19hc3NlcnRpb25fIyNfX0xJTkVfX1soQ09ORCkgPyAxIDogLTFdCiNkZWZpbmUgRU5TVVJFX1NJWkUoc3RydWN0dXJlLCBzaXplKSBTVEFUSUNfQVNTRVJUKHNpemVvZihzdHJ1Y3R1cmUpID09IHNpemUpCgp0eXBlZGVmIHN0cnVjdAp7Cgl1bnNpZ25lZCBhOwp9IGZvbzsKRU5TVVJFX1NJWkUoZm9vLCBzaXplb2YodW5zaWduZWQpKTsKCmludCBtYWluKHZvaWQpIHsKCXVuc2lnbmVkIGxvY2FsX2EgPSAwOwoJZm9vICpmID0gKGZvbyAqKSgmbG9jYWxfYSk7CglwcmludGYoImFkZHJlc3MgbG9jYWxfYTogJVgsIGYtPmE6ICVYXG4iLCAmbG9jYWxfYSwgJmYtPmEpOwoJcmV0dXJuIDA7Cn0K