类型“identifier”具有非法的零大小数组
结构或位域的成员包含不是最后一个成员的零大小数组。
由于可以将零大小数组作为结构的最后一个成员,因此在分配结构时必须指定其大小。
如果零大小数组不是结构的最后一个成员,则编译器无法计算剩余字段的偏移量。
下面的示例生成 C2229:
// C2229.cpp
struct S {
int a[0]; // C2229 zero-sized array
int b[1];
};
struct S2 {
int a;
int b[0];
};
int main() {
// allocate 7 elements for b field
S2* s2 = (S2*)new int[sizeof(S2) + 7*sizeof(int)];
s2->b[6] = 100;
}