# gcc test.c ; ./a.out OFFSET_M(struct_a, a) is 0 OFFSET_M(struct_a, b) is 4 OFFSET_M(struct_a, c) is 12 sizeof(struct_a) is 16 OFFSET_M(struct_b, a) is 0 OFFSET_M(struct_b, b) is 2 OFFSET_M(struct_b, c) is 4 sizeof(struct_b) is 12
OFFSET_M(struct_a, a) is 0 OFFSET_M(struct_a, b) is 8 OFFSET_M(struct_a, c) is 16 sizeof(struct_a) is 24 OFFSET_M(struct_b, a) is 0 OFFSET_M(struct_b, b) is 2 OFFSET_M(struct_b, c) is 8 sizeof(struct_b) is 16
#2字节对齐 OFFSET_M(struct_a, a) is 0 OFFSET_M(struct_a, b) is 2 OFFSET_M(struct_a, c) is 10 sizeof(struct_a) is 12 OFFSET_M(struct_b, a) is 0 OFFSET_M(struct_b, b) is 2 OFFSET_M(struct_b, c) is 4 sizeof(struct_b) is 12 #4字节对齐 OFFSET_M(struct_a, a) is 0 OFFSET_M(struct_a, b) is 4 OFFSET_M(struct_a, c) is 12 sizeof(struct_a) is 16 OFFSET_M(struct_b, a) is 0 OFFSET_M(struct_b, b) is 2 OFFSET_M(struct_b, c) is 4 sizeof(struct_b) is 12 #8字节对齐 OFFSET_M(struct_a, a) is 0 OFFSET_M(struct_a, b) is 8 OFFSET_M(struct_a, c) is 16 sizeof(struct_a) is 24 OFFSET_M(struct_b, a) is 0 OFFSET_M(struct_b, b) is 2 OFFSET_M(struct_b, c) is 8 sizeof(struct_b) is 16 #16字节对齐 OFFSET_M(struct_a, a) is 0 OFFSET_M(struct_a, b) is 8 OFFSET_M(struct_a, c) is 16 sizeof(struct_a) is 24 OFFSET_M(struct_b, a) is 0 OFFSET_M(struct_b, b) is 2 OFFSET_M(struct_b, c) is 8 sizeof(struct_b) is 16