컴파일러 경고(수준 2 및 수준 4) C4200
비표준 확장이 사용됨: 구조체/공용 구조체의 배열 크기가 0입니다.
C++만:
이 멤버는 기본값으로 설정된 생성자 또는 복사/이동 대입 연산자에서 무시됩니다.
이 경고는 구조체 또는 공용 구조체에 크기가 0인 배열이 포함되어 있음을 나타냅니다. 크기가 0인 배열의 선언은 비표준 컴파일러 확장입니다. 이로 인해 C++ 파일을 컴파일할 때는 수준 2 경고가, C 파일을 컴파일할 때는 수준 4 경고가 발생합니다. 이 예제에서는 경고 C4200을 생성합니다.
// C4200.cpp
// compile by using: cl /W4 c4200.cpp
struct A {
int len;
int a[0]; // C4200
};
이 비표준 확장은 코드가 가변 길이의 외부 데이터 구조체와 상호 작용하도록 하는 데 사용되는 경우가 많습니다. 사용 중인 코드에 이러한 시나리오가 적용되는 경우에는 경고가 표시되지 않도록 설정할 수 있습니다.
예제
// C4200b.cpp
// compile by using: cl /W4 c4200a.cpp
#pragma warning(disable : 4200)
struct A {
int len;
int a[0];
};