C6244C6244

Avertissement C6244 : la déclaration locale de <variable > masque la déclaration précédente à <ligne > de <fichier >warning C6244: local declaration of <variable> hides previous declaration at <line> of <file>

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.This warning indicates that a declaration has the same name as a declaration at an outer scope and hides the previous declaration. Vous ne serez pas en mesure de faire référence à la déclaration précédente à partir de la portée locale.You will not be able to refer to the previous declaration from inside the local scope. Toute utilisation prévue de la déclaration précédente se retrouve à l’aide de la déclaration locale, que cet avertissement identifie uniquement un chevauchement de la portée et le chevauchement de durée de vie pas.Any intended use of the previous declaration will end up using the local declaration This warning only identifies a scope overlap and not lifetime overlap.

ExempleExample

Le code suivant génère cet avertissement :The following code generates this warning:

#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 :To correct this warning, use the following sample code:

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

Lors du traitement d’allocation de mémoire, passez en revue le code pour déterminer si une allocation a été enregistrée dans une variable et libérée par une autre variable.When dealing with memory allocation, review code to determine whether an allocation was saved in one variable and freed by another variable.