C6273
6273 - De aviso não inteiro é passado como o parâmetro <number> Quando o número inteiro é necessária na chamada para <function>: Se o valor do ponteiro está sendo passado, %p deve ser usado.
Este aviso indica que a seqüência de caracteres de formato Especifica um número inteiro, por exemplo, um %d, especificação de comprimento ou a precedência de printf , mas um não-inteiro como um float, string, ou struct está sendo passado como um parâmetro. Esse defeito provavelmente resultará na saída incorreta.
Exemplo
O código a seguir gera este aviso porque um número inteiro é necessário em vez de um float para sprintf função:
#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 utiliza um integer converter para corrigir este aviso:
#include <stdio.h>
#include <string.h>
void f_corrected()
{
char buff[50];
float f=1.5;
sprintf(buff,"%d",(int)f);
}
O código a seguir usa a função de manipulação de cadeia de caracteres seguras, sprintf_s, para corrigir este aviso:
#include <stdio.h>
#include <string.h>
void f_safe()
{
char buff[50];
float f=1.5;
sprintf_s(buff,50,"%d",(int)f);
}
Este aviso não é aplicável no Windows 9 x e o Windows NT versão 4 porque não há suporte para o %p nessas plataformas.