| #define __packed __attribute__((packed)) |
| |
| typedef unsigned char u8; |
| typedef __UINT16_TYPE__ u16; |
| typedef __UINT32_TYPE__ u32; |
| typedef __UINT64_TYPE__ u64; |
| |
| struct a { |
| u8 a; |
| u8 b; |
| u16 c; |
| } __packed; |
| _Static_assert(__alignof(struct a) == 1, "align struct"); |
| _Static_assert( sizeof(struct a) == 4, " size struct"); |
| |
| struct b { |
| u32 a; |
| u32 b; |
| } __packed; |
| _Static_assert(__alignof(struct b) == 1, "align struct"); |
| _Static_assert( sizeof(struct b) == 8, "size struct"); |
| |
| struct c { |
| u16 a; |
| u32 b; |
| } __packed; |
| _Static_assert(__alignof(struct c) == 1, "align struct"); |
| _Static_assert( sizeof(struct c) == 6, "size struct"); |
| |
| /* |
| * check-name: packed-struct |
| */ |