C6273
Actualización: noviembre 2007
C6273
Advertencia 6273: Valor no entero pasado como parámetro <número> cuando el entero es necesario para llamar a <función>: si se está pasando un valor de puntero, deberá utilizar %p
Esta advertencia indica que la cadena de formato especifica un entero, por ejemplo, una especificación %d, de longitud o de prioridad para printf, pero se pasa como parámetro un tipo no entero, como float, una cadena o struct. Es probable que este defecto produzca resultados incorrectos.
Ejemplo
El código siguiente genera esta advertencia porque se requiere un entero en lugar de float para una función sprintf:
#include <stdio.h>
#include <string.h>
void f_defective()
{
char buff[50];
float f=1.5;
sprintf(buff, "%d",f);
}
El código siguiente utiliza la conversión de enteros para corregir esta advertencia:
#include <stdio.h>
#include <string.h>
void f_corrected()
{
char buff[50];
float f=1.5;
sprintf(buff,"%d",(int)f);
}
El código siguiente utiliza la función de manipulación de cadenas de caracteres segura, sprintf_s, para corregir esta advertencia:
#include <stdio.h>
#include <string.h>
void f_safe()
{
char buff[50];
float f=1.5;
sprintf_s(buff,50,"%d",(int)f);
}
Esta advertencia no es aplicable en Windows 9x y Windows NT versión 4 porque %p no se admite en estas plataformas.