C6273
Обновлен: Ноябрь 2007
C6273
Предупреждение 6273. В качестве параметра <номер> передано нецелочисленное значение; при вызове <функция> требуется целочисленное значение; если передается значение указателя, следует использовать %p
Данное предупреждение означает, что строка формата указывает на необходимость целого числа (например, указания параметра %d, длины или приоритета для функции printf), однако в качестве параметра передан другой тип, такой как значение float, struct или строка. Эта ошибка может привести к неверным результатам.
Пример
В следующем коде создается данное предупреждение, поскольку вместо значения float в функцию sprintfтребуется передать целое число:
#include <stdio.h>
#include <string.h>
void f_defective()
{
char buff[50];
float f=1.5;
sprintf(buff, "%d",f);
}
В следующем коде для устранения этого предупреждения используется приведение к целочисленному типу:
#include <stdio.h>
#include <string.h>
void f_corrected()
{
char buff[50];
float f=1.5;
sprintf(buff,"%d",(int)f);
}
В следующем коде для устранения этого предупреждения используется функция безопасной обработки строк 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);
}
Данное предупреждение неприменимо в операционных системах Windows 9x и Windows NT версии 4, поскольку %p не поддерживается на этих платформах.