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