typedef struct
{
int bla_u32;
short bla_u16;
char bla_u8;
/* <-- this gap will be filled in the unpacked version */
} uneven;
#define StaticAssert(cond, msg) switch(0){case 0:case cond:;}
void checkSizes()
{
uneven unpacked;
#pragma pack(push, 1)
typedef struct
{
int bla_u32;
short bla_u16;
char bla_u8;
/* <-- this gap will be filled in the unpacked version */
} uneven;
#pragma pack(pop)
uneven packed;
StaticAssert(sizeof(unpacked) == sizeof(packed), "uneven contains gaps");
}
CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgYmxhX3UzMjsKICBzaG9ydCBibGFfdTE2OwogIGNoYXIgYmxhX3U4OwoKICAvKiA8LS0gdGhpcyBnYXAgd2lsbCBiZSBmaWxsZWQgaW4gdGhlIHVucGFja2VkIHZlcnNpb24gKi8KfSAgdW5ldmVuOwoKI2RlZmluZSBTdGF0aWNBc3NlcnQoY29uZCwgbXNnKSBzd2l0Y2goMCl7Y2FzZSAwOmNhc2UgY29uZDo7fQoKdm9pZCBjaGVja1NpemVzKCkKewogIHVuZXZlbiB1bnBhY2tlZDsKI3ByYWdtYSBwYWNrKHB1c2gsIDEpCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgYmxhX3UzMjsKICBzaG9ydCBibGFfdTE2OwogIGNoYXIgYmxhX3U4OwoKICAvKiA8LS0gdGhpcyBnYXAgd2lsbCBiZSBmaWxsZWQgaW4gdGhlIHVucGFja2VkIHZlcnNpb24gKi8KfSAgdW5ldmVuOwojcHJhZ21hIHBhY2socG9wKQogIHVuZXZlbiBwYWNrZWQ7CiAgU3RhdGljQXNzZXJ0KHNpemVvZih1bnBhY2tlZCkgPT0gc2l6ZW9mKHBhY2tlZCksICJ1bmV2ZW4gY29udGFpbnMgZ2FwcyIpOwp9Cg==
prog.c: In function 'checkSizes':
prog.c:11:50: error: duplicate case value
#define StaticAssert(cond, msg) switch(0){case 0:case cond:;}
^
prog.c:27:3: note: in expansion of macro 'StaticAssert'
StaticAssert(sizeof(unpacked) == sizeof(packed), "uneven contains gaps");
^
prog.c:11:43: error: previously used here
#define StaticAssert(cond, msg) switch(0){case 0:case cond:;}
^
prog.c:27:3: note: in expansion of macro 'StaticAssert'
StaticAssert(sizeof(unpacked) == sizeof(packed), "uneven contains gaps");
^