Sdílet prostřednictvím


C6306

upozornění C6306: nesprávné volání do <function>: zvažte použití <function>, která přijímá va_list jako argument

Toto upozornění znamená nesprávné volání funkce.Rodina printf obsahuje několik funkcí, které přijímají proměnlivý seznam argumentů; tyto funkce však nelze volat s argumentem va_list.Existuje odpovídající rodina funkcí vprintf, které lze pro taková volání použít.Volání nesprávné funkce print způsobí nesprávný výstup.

Příklad

Následující kód generuje toto upozornění:

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

Pro opravu tohoto upozornění použijte následující kód:

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

Viz také

Referenční dokumentace

C6273