Warnung C6064
Fehlendes ganzzahliges Argument für 'Funktionsname', das dem Konvertierungsbezeichner 'number' entspricht
Diese Warnung gibt an, dass der Code nicht genügend Argumente bereitstellt, um einer Formatzeichenfolge zu entsprechen, und eines der fehlenden Argumente ist eine ganze Zahl.
Hinweise
Dieser Fehler verursacht wahrscheinlich eine falsche Ausgabe und kann in gefährlicheren Fällen zu Stapelüberlauf führen.
Codeanalysename: MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION
Beispiel
Der folgende Code generiert diese Warnung, da im Aufruf sprintf_s
eine falsche Anzahl von Argumenten verwendet wird und das fehlende Argument eine ganze Zahl ist. Wenn die unsichere Funktion sprintf
anstelle der sichereren Variante sprintf_s
verwendet wurde, würde dieser Code wahrscheinlich einen Stapelüberlauf anstelle einer unerwarteten Ausgabe verursachen:
void f()
{
char buff[8];
const char *string="Hello";
sprintf_s(buff, sizeof(buff), "%s %d", string); // Attempts to print "Hello "
// followed by a number up to eleven characters long, depending on the garbage
// found on the stack. Any number other than a single non-negative digit can't
// fit in the 8 char buffer and leave room for the trailing null. If sprintf
// had been used instead, it would overflow.
}
Um diese Warnung zu korrigieren, geben Sie fehlende Argumente an, oder passen Sie die Formatzeichenfolge an. In diesem Beispiel fügen wir den fehlenden ganzzahligen Wert hinzu.
void f()
{
char buff[8];
const char *string = "Hello";
sprintf_s(buff, sizeof(buff), "%s %d", string, strlen(string));
}