C6306
avertissement C6306 : appel à <fonction> incorrect : si possible, utilisez <fonction> qui accepte un type va_list comme argument
Cet avertissement indique un appel de fonction incorrect. La famille printf contient plusieurs fonctions qui acceptent une liste variable d'arguments ; toutefois, ces fonctions ne peuvent pas être appelées avec un argument va_list. Une famille vprintf correspondante de fonctions peut être utilisée pour ces appels. L'appel à la fonction d'impression incorrecte provoque une sortie incorrecte.
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 6306
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);
}