警告 C6246

'variable' のローカル宣言では、外部スコープ内の同じ名前の宣言が非表示になります。 追加情報: 「location」の前の宣言を参照してください。

解説

この警告は、2 つの宣言がローカル スコープで同じ名前を持つことを示します。 外部スコープの名前は、内部スコープの宣言によって非表示になります。 外部スコープ宣言を意図して使用すると、ローカル宣言が使用されます。

コード分析名: LOCALDECLHIDESLOCAL

この警告が発生するコード例を次に示します。

#include <stdlib.h>
#define UPPER_LIMIT 256
int DoSomething( );

int f( )
{
  int i = DoSomething( );
  if (i > UPPER_LIMIT)
  {
    int i;
    i = rand( );
  }
  return i;
}

この警告を修正するには、次のコードに示すように、別の変数名を使用します。

#include <stdlib.h>
#define UPPER_LIMIT 256
int DoSomething( );

int f ( )
{
  int i = DoSomething( );
  if (i > UPPER_LIMIT)
  {
    int j = rand( );
    return j;
  }
  else
  {
    return i;
  }
}

この警告は、スコープの重複のみを識別します。