C6306
avviso C6306: chiamata a <funzione> non corretta: si consiglia di utilizzare <funzione> che accetta va_list come argomento
L'avviso indica una chiamata a una funzione non corretta.La famiglia printf include varie funzioni che accettano un elenco variabile di argomenti; tali funzioni, tuttavia, non possono essere chiamate con un argomento va_list.Per tali chiamate è possibile utilizzare una famiglia di funzioni vprintf corrispondente.La chiamata a una funzione di stampa errata produrrà un output non corretto.
Esempio
Il codice seguente genera questo avviso:
#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);
}
Per risolvere il problema, utilizzare il codice seguente:
#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);
}