C6244

Avertissement C6244 : la déclaration locale de <variable> masque la déclaration précédente dans <ligne> de <fichier>

Cet avertissement indique qu'une déclaration a le même nom qu'une déclaration dans la portée externe et masque la déclaration précédente. Vous ne pouvez pas faire référence à la déclaration précédente à partir de la portée locale. Toute utilisation prévue de la déclaration précédente revient à utiliser la déclaration locale. Cet avertissement identifie uniquement un chevauchement de portée, et non un chevauchement de durée de vie.

Exemple

Le code suivant génère cet avertissement :

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

Pour corriger cet avertissement, utilisez l'exemple de code suivant :

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

Lorsque vous utilisez l'allocation de mémoire, examinez le code pour déterminer si une allocation a été enregistrée dans une variable et libérée par une autre variable.