C6260

avertissement C6260 : sizeof * sizeof est quasiment toujours incorrect. Souhaitiez-vous utiliser un nombre de caractères ou d'octets ?

Cet avertissement indique que les résultats de deux opérations sizeof ont été multipliés ensemble. L'opérateur sizeof en C/C++ retourne le nombre d'octets de stockage utilisé par un objet. Il est généralement incorrect de le multiplier par une autre opération sizeof ; on utilise généralement le nombre d'octets dans un objet ou le nombre d'éléments dans un tableau (par exemple, le nombre de caractères larges dans un tableau).

Un comportement non intuitif est associé à l'opérateur sizeof. Par exemple, en C, sizeof ('\0') == 4,, car un caractère est d'un type intégral. En C++, le type d'un littéral de caractère est char, donc sizeof ('\0') == 1. Toutefois, les éléments suivants sont vrais en C et C++ :

sizeof ("\0") == 2. 

Exemple

Le code suivant génère cet avertissement :

#include <windows.h>

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

Pour corriger cet avertissement, utilisez le code suivant :

#include <windows.h>

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

Voir aussi

Référence

sizeof Operator

sizeof Operator (C)