Avertissement C6396
sizeof('integerConstant') retourne toujours la taille du type d’entier sous-jacent
Notes
Cet avertissement indique où une constante intégrale est utilisée comme argument sizeof
. Cette expression retourne toujours la taille du type de la constante. Il est préférable d’écrire sizeof(type)
à la place. Cet avertissement intercepte les fautes de frappe courantes dans les calculs de décalage de mémoire tampon.
Ce contrôle ignore les littéraux de caractères, car buffer_size += sizeof(UNICODE_NULL)
est un idiome commun.
Exemple
void f()
{
int a = sizeof(5); // C6396 reported here
}
Pour résoudre ce problème, remplacez la constante intégrale par son type :
void f()
{
int a = sizeof(int); // no C6396 reported here
}