C6244
Примечание C6244: локальное объявление <переменной> скрывает предыдущее объявление в строке <строка> файла <файл>.
Данное предупреждение означает, что объявлению присвоено имя объявления из внешней области видимости и поэтому новое объявление скрывает предыдущее. Ссылка на предыдущее объявление из локальной области станет невозможной. Любое преднамеренное использование предыдущего объявления приведет к использованию локального объявления. Это предупреждение указывает только на наложение областей действия и не указывает на наложение времен существования.
Пример
Данное предупреждение создается в следующем коде:
#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)
Для устранения этого предупреждения используйте следующий пример кода:
#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)
При работе с выделением памяти изучите код, чтобы определить, не было ли выделение сохранено в одной переменной и освобождено другой переменной.