#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 b0 : 1;
unsigned b1 : 1;
unsigned b2 : 1;
unsigned b3 : 1;
unsigned b4 : 1;
unsigned b5 : 1;
unsigned b6 : 1;
unsigned b7 : 1;
unsigned b8 : 1;
unsigned b9 : 1;
unsigned b10 : 1;
unsigned b11 : 1;
unsigned b12 : 1;
unsigned b13 : 1;
unsigned b14 : 1;
unsigned b15 : 1;
unsigned b16 : 1;
unsigned b17 : 1;
unsigned b18 : 1;
unsigned b19 : 1;
unsigned b20 : 1;
unsigned b21 : 1;
unsigned b22 : 1;
unsigned b23 : 1;
unsigned b24 : 1;
unsigned b25 : 1;
unsigned b26 : 1;
unsigned b27 : 1;
unsigned b28 : 1;
unsigned b29 : 1;
unsigned b30 : 1;
unsigned b31 : 1;
unsigned b32 : 1;
} foo;
ENSURE_SIZE(foo, sizeof(unsigned));
int main(void) {
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNUQVRJQ19BU1NFUlQoQ09ORCkgdHlwZWRlZiBjaGFyIHN0YXRpY19hc3NlcnRpb25fIyNfX0xJTkVfX1soQ09ORCkgPyAxIDogLTFdCiNkZWZpbmUgRU5TVVJFX1NJWkUoc3RydWN0dXJlLCBzaXplKSBTVEFUSUNfQVNTRVJUKHNpemVvZihzdHJ1Y3R1cmUpID09IHNpemUpCgp0eXBlZGVmIHN0cnVjdAp7Cgl1bnNpZ25lZCBiMCA6IDE7Cgl1bnNpZ25lZCBiMSA6IDE7Cgl1bnNpZ25lZCBiMiA6IDE7Cgl1bnNpZ25lZCBiMyA6IDE7Cgl1bnNpZ25lZCBiNCA6IDE7Cgl1bnNpZ25lZCBiNSA6IDE7Cgl1bnNpZ25lZCBiNiA6IDE7Cgl1bnNpZ25lZCBiNyA6IDE7Cgl1bnNpZ25lZCBiOCA6IDE7Cgl1bnNpZ25lZCBiOSA6IDE7Cgl1bnNpZ25lZCBiMTAgOiAxOwoJdW5zaWduZWQgYjExIDogMTsKCXVuc2lnbmVkIGIxMiA6IDE7Cgl1bnNpZ25lZCBiMTMgOiAxOwoJdW5zaWduZWQgYjE0IDogMTsKCXVuc2lnbmVkIGIxNSA6IDE7Cgl1bnNpZ25lZCBiMTYgOiAxOwoJdW5zaWduZWQgYjE3IDogMTsKCXVuc2lnbmVkIGIxOCA6IDE7Cgl1bnNpZ25lZCBiMTkgOiAxOwoJdW5zaWduZWQgYjIwIDogMTsKCXVuc2lnbmVkIGIyMSA6IDE7Cgl1bnNpZ25lZCBiMjIgOiAxOwoJdW5zaWduZWQgYjIzIDogMTsKCXVuc2lnbmVkIGIyNCA6IDE7Cgl1bnNpZ25lZCBiMjUgOiAxOwoJdW5zaWduZWQgYjI2IDogMTsKCXVuc2lnbmVkIGIyNyA6IDE7Cgl1bnNpZ25lZCBiMjggOiAxOwoJdW5zaWduZWQgYjI5IDogMTsKCXVuc2lnbmVkIGIzMCA6IDE7Cgl1bnNpZ25lZCBiMzEgOiAxOwoJdW5zaWduZWQgYjMyIDogMTsKfSBmb287CkVOU1VSRV9TSVpFKGZvbywgc2l6ZW9mKHVuc2lnbmVkKSk7CgppbnQgbWFpbih2b2lkKSB7CglyZXR1cm4gMDsKfQo=
prog.c:3:42: error: size of array 'static_assertion___LINE__' is negative
#define STATIC_ASSERT(COND) typedef char static_assertion_##__LINE__[(COND) ? 1 : -1]
^
prog.c:4:38: note: in expansion of macro 'STATIC_ASSERT'
#define ENSURE_SIZE(structure, size) STATIC_ASSERT(sizeof(structure) == size)
^
prog.c:42:1: note: in expansion of macro 'ENSURE_SIZE'
ENSURE_SIZE(foo, sizeof(unsigned));
^