C6246

تحذير C6246: تصريح <متغير> المحلية بإخفاء التصريح بنفس الاسم في نطاق الخارجي. معلومات إضافية: راجع إعلان السابقة في <الموقع>.

هذا التحذير يشير إلى أن تصريحات الثاني لها نفس اسم في نطاق المحلي. الاسم في نطاق الخارجي هو مخفية بواسطة التعريف في نطاق الداخلي. سوف ينتج عن أي استخدام المقصودة للتعريف نطاق الخارجي استخدام إعلان محلي.

مثال

يلي تعليمات برمجية ينشئ هذا التحذير:

#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;
  }
}

ويعرف هذا التحذير فقط يتراكب نطاق.