Предупреждение C6306

Неправильный вызов функции: рассмотрите возможность использования функции, которая принимает va_list в качестве аргумента

Замечания

Это предупреждение указывает на неправильный вызов функции. Семейство printf включает несколько функций, которые принимают переменный список аргументов, однако эти функции нельзя вызывать с аргументом va_list . Существует соответствующая vprintf семья функций, которые можно использовать для таких вызовов. Вызов неправильной функции печати приведет к неправильному выводу.

Имя анализа кода: INCORRECT_VARARG_FUNCTIONCALL

Пример

Следующий код создает это предупреждение:

#include <stdio.h>
#include <stdarg.h>

void f(int i, ...)
{
   va_list v;

   va_start(v, i);
   //code...
   printf("%s", v); // warning C6306
   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);
}

См. также

C6273