Compartilhar via


C6244

Aviso C6244: declaração de local de <variable> oculta a declaração anterior em <line> de <file>

Este aviso indica que uma declaração tem o mesmo nome de uma declaração em um escopo externo e oculta a declaração anterior.Você não poderá referir-se a declaração anterior de dentro do escopo local.Qualquer uso pretendido da declaração anterior terminarão usando a declaração de local, que esse aviso identifica somente uma sobreposição de escopo e não a sobreposição de tempo de vida.

Exemplo

O código a seguir gera este aviso:

#include <stdlib.h>
#pragma warning(push)

// disable warning C4101: unreferenced local variable 
#pragma warning(disable: 4101) 

int i;
void f();
void (*pf)();

void test()
{
    // Hide global int with local function pointer
    void (*i)();  //Warning: 6244

     // Hide global function pointer with an int
    int pf;     //Warning: 6244
}
#pragma warning(pop)

Para corrigir esse aviso, use o exemplo de código a seguir:

#include <stdlib.h>
#pragma warning(push)
// disable warning C4101: unreferenced local variable 
#pragma warning(disable: 4101) 

int g_i;          // modified global variable name
void g_f();       // modified global function name
void (*f_pf)();   // modified global function pointer name

void test()
{
    void (*i)();
    int pf;
}
#pragma warning(pop)

Ao lidar com a alocação de memória, revise o código para determinar se uma alocação foi salvo em uma variável e liberada por outra variável.