C6260

تحذير C6260: sizeof * sizeof هو دائماً wrong، هل كنت تنوي استخدام عدد أحرف أو عدد بايت؟

هذا التحذير يشير إلى أن نتائج الثاني sizeofقد تم ضرب العمليات مع بعضها البعض. /C + + C sizeofعامل التشغيل بإرجاع عدد وحدات وحدات البايت تخزين كائن يستخدم. هو عادة غير صحيحة لضرب آخر sizeofتشغيل؛ عادة واحد هو مهتم بعدد وحدات البايت في كائن أو عدد العناصر في صفيفة (على سبيل المثال رقم كبيرة-حرف/ حروف الموجودة في صفيفة).

هناك هو بعض سلوك unintuitive المقترنة sizeofعامل التشغيل. على سبيل المثال، في C، sizeof ('\0') == 4,لأن حرف هو من نوع المتكاملة. في C + +، هو النوع من حرف حرفي char, لذلك sizeof ('\0') == 1. ولكن، في كل من C و C + +، ما يلي هو صحيحاً:

sizeof ("\0") == 2. 

مثال

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

#include <windows.h>

void f( )
{
  int i;
  i = sizeof (L"String") * sizeof (WCHAR);
  // code ...
}

إلى تصحيح هذا التحذير، استخدم تعليمات برمجية التالية:

#include <windows.h>

void f( )
{
  int i;
  i= sizeof (L"String") / sizeof (WCHAR);
  
  /* or to get bytes */
  i = sizeof (L"String");
  // code ...
}

راجع أيضًا:

المرجع

sizeof Operator

The sizeof Operator