Warnung C6302
Zeichenfolgenkonflikt formatieren.
Hinweise
Diese Warnung gibt an, dass eine Formatzeichenfolge eine breite Zeichenfolge angibt, aber stattdessen eine schmale Zeichenfolge übergeben wird. Eine Ursache für die Warnung ist, dass die Bedeutung und das Kippen %s
%S
bei Verwendung mit printf
oder wprintf
. Dieser Fehler kann zu Abstürze führen, zusätzlich zu potenziell falschen Ausgaben.
Codeanalysename: CHAR_WCHAR_ARGUMENT_TO_FORMAT_FUNCTION
Beispiel
Der folgende Code generiert diese Warnung. buff
ist eine schmale Zeichenfolge, ist aber wprintf_s
die breite Zeichenfolgenvariante printf_s
und erwartet daher %s
breite Breite:
void f()
{
char buff[5] = "hi";
wprintf_s(L"%s", buff);
}
Der folgende Beispielcode behebt dieses Problem mithilfe %hs
der Angabe einer Zeichenfolge mit einem einzelnen Byte. Alternativ könnte es zu %S
einer schmalen Zeichenfolge gewechselt sein, die bei Verwendung mit wprintf
ähnlichen Funktionen eine schmale Zeichenfolge ist. Weitere Optionen finden Sie unter "Formatspezifikationssyntax: printf
und wprintf
Funktionen ".
void f()
{
char buff[5] = "hi";
wprintf_s(L"%hs", buff);
}
Siehe auch
Formatspezifikationssyntax: printf
und wprintf
Funktionen
C4477
C6303