Compartilhar via


Erro do compilador C2229

o tipo 'identifier' tem uma matriz inválida de tamanho zero

Um membro de um campo de estrutura ou campo de bits contém uma matriz de tamanho zero que não é o último membro.

Como você pode ter uma matriz de tamanho zero como o último membro do struct, você deve especificar o tamanho dela ao alocar o struct.

Se a matriz de tamanho zero não for o último membro do struct, o compilador não poderá calcular o deslocamento para os campos restantes.

O seguinte exemplo gera o erro 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;
}