C6273
경고 6273 - 정수가 아닌 항목이 매개 변수 <number>(으)로 전달되었습니다. <function>에 대한 호출에는 정수가 필요합니다. 포인터 값이 전달되는 경우 %p을(를) 사용해야 합니다.
이 경고는 예를 들면 printf에 길이나 우선 순위 사양인 %d를 지정하는 것처럼 형식 문자열이 정수를 지정하지만 float, 문자열 또는 struct 같은 정수 아닌 항목이 매개 변수로 전달되고 있음을 나타냅니다.이 오류로 인해 출력이 올바르지 않을 수 있습니다.
예제
다음 코드에서는 sprintf함수에 float 대신 정수가 필요하기 때문에 이 경고가 생성됩니다.
#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가 지원되지 않으므로 이 경고가 적용되지 않습니다.