Udostępnij za pośrednictwem


C6244

Ostrzeżenie C6244: lokalna deklaracja <variable> ukrywa poprzednią deklarację w <line> w pliku <file>

To ostrzeżenie wskazuje, że deklaracja ma taką samą nazwę jak deklaracja w zewnętrznym zakresie i ukrywa poprzednią deklarację.Nie można odwoływać się do poprzedniej deklaracji z wewnętrznego zakresu lokalnego.Wszelkie próby użycia poprzedniej deklaracji spowodują użycie lokalnej deklaracji. To ostrzeżenie identyfikuje tylko nakładanie się zakresów, nie nakładanie się okresów istnienia.

Przykład

Poniższy kod generuje to ostrzeżenie:

#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)

Aby poprawić to ostrzeżenie, należy użyć następującego, przykładowego kodu:

#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)

Podczas zajmowania alokacji pamięci, należy przejrzeć kod, aby określić, czy alokacja została zapisana do jednej zmiennej i zwolniona przez inną zmienną.