Dan*_*her 16
无论是struct声明由C标准允许的.n1570中的6.7.2.1(8):
如果struct-declaration-list不包含任何命名成员(直接或通过匿名结构或匿名联合),则行为未定义.
并在同一部分第18段:
作为一种特殊情况,具有多个命名成员的结构的最后一个元素可能具有不完整的数组类型; 这被称为灵活的数组成员.在大多数情况下,忽略灵活的数组成员.特别地,结构的尺寸好像省略了柔性阵列构件,除了它可以具有比遗漏意味着更多的拖尾衬垫.
(强调我的)
C++中不允许使用灵活的数组成员,因此代码也不是有效的C++.
由于它不是有效代码,因此报告的值sizeof无意义.