Because I don't see which kind of tail padding would occur after a zero-length array (which does not change at all the size of existing enclosing type, except for aligning the first member of the zero-length array: this is not *trailing* padding, but *leading* padding, i.e. influences the offset of the 1st element that could be in the variable-size array; but when the zero-length array has base type "char", its alignment is 1 by definition, meaning that multiple members of type non-array char are just packed at successive offsets+1: