C6306
Обновлен: Ноябрь 2007
C6306
Предупреждение C6306: неверный вызов <функции>: попробуйте использовать <функцию>, принимающую va_list в качестве аргумента.
Это предупреждение означает неверный вызов функции. Семейство printf включает несколько функций с переменным набором аргументов, но эти функции нельзя вызывать с аргументом va_list. Для таких вызовов существует соответствующее семейство функций vprintf. Вызов неверной функции печати приведет к неверным выходным данным.
Пример
Это предупреждение создается следующим кодом:
#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);
}
Для устранения этого предупреждения используйте следующий код:
#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);
}