Condividi tramite


Errore del compilatore C2229

Il tipo 'identifier' ha una matrice di dimensioni zero non valide

Un membro di una struttura o di un campo di bit contiene una matrice di dimensioni zero che non è l'ultimo membro.

Poiché è possibile avere una matrice di dimensioni zero come ultimo membro dello struct, è necessario specificarne le dimensioni quando si alloca lo struct.

Se la matrice con dimensioni zero non è l'ultimo membro dello struct, il compilatore non può calcolare l'offset per i campi rimanenti.

L'esempio seguente genera l'errore 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;
}