共用方式為


編譯器錯誤 C2229

類型 『identifier』 具有不合法的零大小數位

結構或位欄位的成員包含不是最後一個成員的零大小數位。

因為您可以將零大小的陣列當做結構的最後一個成員,因此當您配置結構時,必須指定其大小。

如果零大小的陣列不是結構的最後一個成員,編譯程式就無法計算其餘欄位的位移。

下列範例會產生 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;
}