Compartilhar via


Aviso do Compilador (nível 2 e nível 4) C4200

extensão não padrão usada: matriz de tamanho zero no struct/união

Somente C++:

Este membro será ignorado por um construtor padrão ou operador de atribuição de cópia/movimentação

Esse aviso indica que uma estrutura ou união contém uma matriz com tamanho zero. A declaração de uma matriz de tamanho zero é uma extensão não padrão do compilador. Isso causa um aviso de nível 2 quando um arquivo C++ é compilado e um aviso de nível 4 quando um arquivo C é compilado. Este exemplo gera um aviso C4200:

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

Essa extensão não padrão é frequentemente utilizada para fazer a interface do código com estruturas de dados externas que têm um comprimento variável. Se esse cenário se aplicar ao seu código, você pode desabilitar o aviso:

Exemplo

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