Udostępnij za pośrednictwem


C6306

Ostrzeżenie C6306: nieprawidłowe wywołanie <function>: należy rozważyć użycie <function>, która akceptuje jako argument va_list

To ostrzeżenie wskazuje niepoprawne użycie wywołania funkcji.Rodzina printf zawiera kilka funkcji, które przyjmują listę argumentów zmiennych; jednakże, te funkcje nie mogą być wywołane z argumentem va_list.Dla tego typu wywołań dostępna jest odpowiadająca rodzina funkcji vprintf.Wywołanie złej funkcji drukowania spowoduje niepoprawne dane wyjściowe.

Przykład

Poniższy kod generuje to ostrzeżenie:

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

Aby poprawić to ostrzeżenie, należy użyć następującego kodu:

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

Zobacz też

Informacje

C6273