Compartir a través de


Advertencia del compilador (niveles 2 y 4) C4200

se ha utilizado una extensión no estándar: matriz de tamaño cero en struct/union

Sólo C++:

Un constructor con valor predeterminado o un operador de asignación de copia o movimiento ignorará a este miembro

Observaciones

La advertencia indica que una estructura o unión contiene una matriz de tamaño cero. La declaración de una matriz de tamaño cero es una extensión del compilador no estándar. Esto genera una advertencia de nivel 2 al compilar un archivo de C++ y una advertencia de nivel 4 al compilar un archivo de C.

Ejemplo

Este ejemplo genera la advertencia C4200:

// C4200.cpp
// compile by using: cl /W4 c4200.cpp
struct A {
    int len;
    int a[0];  // C4200
};

Esta extensión no estándar se utiliza a menudo para conectar el código con las estructuras de datos externos que tienen una longitud variable. Si esta situación se aplica a su código, puede deshabilitar la advertencia:

// C4200b.cpp
// compile by using: cl /W4 c4200a.cpp
#pragma warning(disable : 4200)
struct A {
    int len;
    int a[0];
};