다음을 통해 공유


컴파일러 경고(수준 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];
};