Avertissement C6303
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 étroite, mais qu’elle est passée à une chaîne de caractères large à 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 : WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION
Exemple
L’exemple de code suivant génère cet avertissement. buff
est une chaîne de caractères large, mais l’appel printf_s
attend une chaîne courte comme indiqué par %s
:
#include <stdio.h>
void f()
{
wchar_t buff[5] = L"hi";
printf_s("%s", buff);
}
L’exemple de code suivant corrige ce problème en utilisant %ls
pour spécifier une chaîne de caractères large. Vous pouvez également passer à %S
une chaîne large lorsqu’elle est utilisée avec printf
des fonctions similaires. Consultez la syntaxe de spécification de format : printf
et wprintf
les fonctions pour plus d’options.
#include <stdio.h>
void f()
{
wchar_t buff[5] = L"hi";
printf_s("%ls", buff);
}
Voir aussi
Syntaxe de spécification de format : printf
et wprintf
fonctions
C4477
C6302