Error del compilador C2229
tipo 'identificador' tiene una matriz de tamaño cero no válida
Un miembro de una estructura o un campo de bits contiene una matriz de tamaño cero que no es el último miembro.
Dado que puede tener una matriz de tamaño cero como último miembro de la estructura, debe especificar su tamaño al asignar la estructura.
Si la matriz de tamaño cero no es el último miembro de la estructura, el compilador no puede calcular el desplazamiento de los demás campos.
El ejemplo siguiente genera el error 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;
}