Kompilatorfel C2229

typ "identifierare" har en ogiltig matris med noll storlek

Anmärkningar

En medlem i ett struktur- eller bitfält innehåller en matris med noll storlek som inte är den sista medlemmen.

Eftersom du kan ha en matris med noll storlek som den sista medlemmen i structen måste du ange dess storlek när du allokerar structen.

Om matrisen med nollstorlek inte är den sista medlemmen i structen kan kompilatorn inte beräkna förskjutningen för de återstående fälten.

Example

I följande exempel genereras 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;
}