Avertissement C6302

Mettre en forme une incompatibilité de chaîne.

Notes

Cet avertissement indique qu’une chaîne de format spécifie une chaîne de caractères large, mais qu’elle passe une chaîne de caractères étroite à la place. L’une des causes de l’avertissement est parce que la signification et %s%S le retournement lorsqu’il est utilisé avec printf ou wprintf. Ce défaut peut entraîner des blocages, en plus d’une sortie potentiellement incorrecte.

Nom de l’analyse du code : CHAR_WCHAR_ARGUMENT_TO_FORMAT_FUNCTION

Exemple

Le code suivant génère cet avertissement. buff est une chaîne de caractères étroite, mais wprintf_s est la variante de chaîne large de printf_s et s’attend %s donc à être large :

void f()
{
    char buff[5] = "hi";
    wprintf_s(L"%s", buff);
}

L’exemple de code suivant corrige ce problème à l’aide %hs de la spécification d’une chaîne de caractères d’un octet. Il peut également avoir basculé vers %Sune chaîne étroite lorsqu’elle est utilisée avec wprintf des fonctions similaires. Consultez la syntaxe de spécification de format : printf et wprintf les fonctions pour plus d’options.

void f()
{
    char buff[5] = "hi";
    wprintf_s(L"%hs", buff);
}

Voir aussi

Syntaxe de spécification de format : printf et wprintf fonctions
C4477
C6303