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)
メモリを割り当てる際には、コードを調べて、割り当てが保存された変数と、割り当てを解放した変数が異なるかどうかを判別します。