C6273
O aviso 6273 - não inteiras passado como o número do parâmetro> <quando o inteiro é exigido na chamada <para>funcionar: se um valor do ponteiro está sendo passado, %p deve ser usado
Esse aviso indicar que a cadeia de formato especificar um inteiro, a especificação por exemplo, %d, o comprimento ou de precedência para um printf mas não inteiro, como floatcadeia de caracteres, ou struct estão sendo passados como um parâmetro.Este defeito pode resultar na saída incorretas.
O código a seguir gerenciar esse aviso como um inteiro é necessário em vez de float à função de sprintf:
#include <stdio.h>
#include <string.h>
void f_defective()
{
char buff[50];
float f=1.5;
sprintf(buff, "%d",f);
}
O código a seguir usa um inteiro convertido para corrigir esse aviso:
#include <stdio.h>
#include <string.h>
void f_corrected()
{
char buff[50];
float f=1.5;
sprintf(buff,"%d",(int)f);
}
A função segura de manipulação de cadeia de caracteres dos seguintes usos de código, sprintf_s, para corrigir esse aviso:
#include <stdio.h>
#include <string.h>
void f_safe()
{
char buff[50];
float f=1.5;
sprintf_s(buff,50,"%d",(int)f);
}
Esse aviso não é aplicável a versão 4 do windows 9x e do Windows NT como %p não tem suporte nessas plataformas.