컴파일러 오류 C2229
형식 'identifier'에 잘못된 크기가 0인 배열이 있습니다.
구조체 또는 비트 필드의 멤버에는 마지막 멤버가 아닌 크기가 0인 배열이 포함됩니다.
구조체의 마지막 멤버로 크기가 0인 배열을 가질 수 있으므로 구조체를 할당할 때 크기를 지정해야 합니다.
크기가 0인 배열이 구조체의 마지막 멤버가 아닌 경우 컴파일러는 나머지 필드의 오프셋을 계산할 수 없습니다.
다음 샘플에서는 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;
}