C6273
Aggiornamento: novembre 2007
C6273
Avviso 6273: non integer passato come parametro <numero> mentre nella chiamata a <funzione> è richiesto un integer: se viene passato il valore di un puntatore, utilizzare %p
L'avviso indica che la stringa di formato specifica un integer, ad esempio un %d, una specifica di lunghezza o precedenza per printf. Tuttavia come parametro viene passato un valore non integer come float, una stringa o struct. È probabile che l'errore provochi un output non corretto.
Esempio
Il codice seguente genera l'avviso in quanto è necessario un valore integer in luogo di una funzione float a sprintf:
#include <stdio.h>
#include <string.h>
void f_defective()
{
char buff[50];
float f=1.5;
sprintf(buff, "%d",f);
}
Per risolvere il problema, nel codice seguente viene utilizzato un cast di integer:
#include <stdio.h>
#include <string.h>
void f_corrected()
{
char buff[50];
float f=1.5;
sprintf(buff,"%d",(int)f);
}
Per risolvere il problema, nel codice seguente viene utilizzata la funzione protetta di modifica delle stringhe, sprintf_s:
#include <stdio.h>
#include <string.h>
void f_safe()
{
char buff[50];
float f=1.5;
sprintf_s(buff,50,"%d",(int)f);
}
L'avviso non è applicabile a Windows 9x e Windows NT versione 4 in quanto %p non è supportato su queste piattaforme.