共用方式為


C6244

警告 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)

處理記憶體配置時,請檢閱程式碼,以判定配置是否儲存在某個變數中,且由另一個變數所釋出。