Compartir a través de


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;
}