Avertissement C6328

Incompatibilité de taille : 'type' passé en tant que Param(nombre) quand 'type' est requis dans l’appel à 'nom-fonction'

Notes

Cet avertissement indique que le type requis par le spécificateur de format et le type de l’expression passée ne correspondent pas. L’utilisation du mauvais spécificateur de format est un comportement non défini. Pour corriger l’avertissement, assurez-vous que les spécificateurs de format correspondent aux types des expressions passées.

Nom de l’analyse du code : FORMAT_SIZE_MISMATCH

Exemple

#include <cstdio>

void f(long long a)
{
    printf("%d\n", a); // C6328 emitted.
}

Il existe plusieurs façons de corriger le comportement non défini. Nous pouvons changer le spécificateur de format :

#include <cstdio>

void f(long long a)
{
    printf("%lld\n", a); // No C6328 emitted.
}

Nous pouvons changer le type de l’expression :

#include <cstdio>

void f(int a)
{
    printf("%d\n", a); // No C6328 emitted.
}

En dernier recours, lorsque le dépassement de capacité ne peut pas se produire, nous pouvons introduire un cast :

#include <cstdio>

void f(unsigned char a)
{
    printf("%hhd\n", static_cast<signed char>(a)); // No C6328 emitted.
}

Voir aussi

C6340