Compartilhar via


C6306

Aviso C6306: chamada incorreta para <function>: Considere o uso de <function> que aceita um va_list como um argumento.

Este aviso indica que uma chamada de função incorreta. O printf família inclui várias funções que levam a uma lista variável de argumentos; No entanto, essas funções não podem ser chamadas com um va_list argumento. Não há um correspondente vprintf família de funções que podem ser usados para tais chamadas. Chamar a função de impressão errada fará com que a saída incorreta.

Exemplo

O código a seguir gera este aviso:

#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 corrigir esse aviso, use o seguinte código:

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

Consulte também

Referência

C6273