C6244
更新:2007 年 11 月
警告 C6244: <variable> 的區域宣告會隱藏先前的宣告,其位於第 <line> 行 (<file> 中)
這則警告表示該宣告的名稱與外部範圍中宣告的名稱相同,並會隱藏先前的宣告。您不可以從區域範圍 (Local Scope) 內部參照先前的宣告。任何故意使用的先前宣告都會結束區域宣告的使用。這則警告只會識別範圍重疊,且不是存留期 (Lifetime) 重疊。
範例
下列程式碼將產生出這個警告:
#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)
處理記憶體配置時,請檢閱程式碼,以判定配置是否儲存在某個變數中,且由另一個變數所釋出。