C6306
Actualización: noviembre 2007
C6306
Advertencia C6306: Llamada incorrecta a <función>: considere utilizar <función> que acepta va_list como argumento
Esta advertencia indica una llamada incorrecta a la función. La familia printf incluye varias funciones que utilizan una lista variable de argumentos; sin embargo, no se puede llamar a estas funciones con un argumento va_list. Existe una familia vprintf correspondiente de funciones que se pueden utilizar para este tipo de llamadas. Llamar a la función de impresión equivocada producirá resultados incorrectos.
Ejemplo
El código siguiente genera esta advertencia:
#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);
}
Para corregir esta advertencia, utilice el código siguiente:
#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);
}