Partager via


Erreur du compilateur C2229

type 'identifier' a un tableau de taille zéro non conforme

Un membre d’une structure ou d’un champ de bits contient un tableau de taille zéro qui n’est pas le dernier membre.

Étant donné que vous pouvez avoir un tableau de taille zéro comme dernier membre du struct, vous devez spécifier sa taille lorsque vous allouez le struct.

Si le tableau de taille zéro n’est pas le dernier membre du struct, le compilateur ne peut pas calculer le décalage pour les champs restants.

L’exemple suivant génère l’erreur 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;
}