Freigeben über


C6306

C6306

Warnung C6306: Falscher Aufruf von <Funktion>: Verwenden Sie <Funktion>, das va_list als Argument annimmt.

Diese Warnung weist auf einen ungültigen Funktionsaufruf hin. Die printf-Familie enthält mehrere Funktionen, die eine variable Liste mit Argumenten annehmen; allerdings können diese Funktionen 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 nicht ordnungsgemäßen Ausgabe.

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 6306 
   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

Referenz

C6273