Sdílet prostřednictvím


Chyba kompilátoru C2229

type 'identifier' has an illegal zero-sized array

Poznámky

Člen struktury nebo bitového pole obsahuje pole s nulovou velikostí, která není posledním členem.

Vzhledem k tomu, že pole s nulovou velikostí můžete mít jako poslední člen struktury, je nutné zadat jeho velikost při přidělení struktury.

Pokud pole s nulovou velikostí není posledním členem struktury, kompilátor nemůže vypočítat posun zbývajících polí.

Example

Následující příklad vygeneruje 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;
}