Warnung C6306
Falscher Aufruf von "function": Erwägen Sie die Verwendung von "Funktion", die eine va_list als Argument akzeptiert.
Hinweise
Diese Warnung weist auf einen falschen Funktionsaufruf hin. Die printf
Familie enthält mehrere Funktionen, die eine variable Liste von Argumenten verwenden. Diese Funktionen können jedoch nicht mit einem va_list
Argument aufgerufen werden. Es gibt eine entsprechende vprintf
Familie von Funktionen, die für solche Aufrufe verwendet werden können. Das Aufrufen der falschen Druckfunktion führt zu einer falschen Ausgabe.
Codeanalysename: INCORRECT_VARARG_FUNCTIONCALL
Beispiel
Der folgende Code generiert diese Warnung:
#include <stdio.h>
#include <stdarg.h>
void f(int i, ...)
{
va_list v;
va_start(v, i);
//code...
printf("%s", v); // warning C6306
va_end(v);
}
So korrigieren Sie die Warnung unter Verwendung des folgenden Codes
#include <stdio.h>
#include <stdarg.h>
void f(int i, ...)
{
va_list v;
va_start(v, i);
//code...
vprintf_s("%d",v);
va_end(v);
}