Freigeben über


C6260

Warnung C6260: sizeof * sizeof ist nahezu immer falsch. Wollten Sie eine Zeichenanzahl oder eine Byteanzahl verwenden?

Diese Warnung gibt an, dass die Ergebnisse von zwei sizeof-Operationen gemeinsam multipliziert wurden.Der Operator sizeof in C/C++ gibt die Anzahl der zum Speichern erforderlichen Bytes zurück, die ein Objekt verwendet.Es ist i. d. R. unzulässig, diese mit einer weiteren sizeof-Operation zu multiplizieren; interessant ist normalerweise die Anzahl der Bytes in einem Objekt oder die Anzahl der Elemente in einem Array (z. B. die Anzahl der Breitzeichen in einem Array).

Im Zusammenhang mit dem Operator sizeof gibt es ein wenig intuitives Verhalten.So gilt beispielsweise in C sizeof ('\0') == 4,, da ein Zeichen von einem ganzzahligen Typ ist.In C++ ist der Typ eines Zeichenliterals char, deshalb sizeof ('\0') == 1.Aber sowohl in C als auch in C++ gilt Folgendes:

sizeof ("\0") == 2. 

Beispiel

Der folgende Code generiert diese Warnung:

#include <windows.h>

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

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

#include <windows.h>

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

Siehe auch

Referenz

sizeof Operator

sizeof Operator (C)