Avertissement C6306
Appel incorrect à ' fonction' : envisagez d’utiliser 'function' qui accepte un va_list en tant qu’argument
Notes
Cet avertissement indique un appel de fonction incorrect. La printf
famille comprend plusieurs fonctions qui prennent une liste variable d’arguments . Toutefois, ces fonctions ne peuvent pas être appelées avec un va_list
argument. Il existe une famille de fonctions correspondantes vprintf
qui peuvent être utilisées pour ces appels. L’appel de la fonction d’impression incorrecte entraîne une sortie incorrecte.
Nom de l’analyse du code : INCORRECT_VARARG_FUNCTIONCALL
Exemple
Le code suivant génère cet avertissement :
#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);
}
Pour corriger cet avertissement, utilisez le code suivant :
#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);
}