Udostępnij przez


Błąd kompilatora C2229

typ "identifier" ma niedozwoloną tablicę o zerowym rozmiarze

Uwagi

Element członkowski struktury lub pola bitowego zawiera tablicę o zerowym rozmiarze, która nie jest ostatnim elementem członkowskim.

Ponieważ można mieć tablicę o zerowym rozmiarze jako ostatni element członkowski struktury, należy określić jej rozmiar podczas przydzielania struktury.

Jeśli tablica o zerowym rozmiarze nie jest ostatnim elementem członkowskim struktury, kompilator nie może obliczyć przesunięcia pozostałych pól.

Example

Poniższy przykład generuje 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;
}