Freigeben über


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);
}

Siehe auch

C6273