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