Share via


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가 지원되지 않으므로 이 경고가 적용되지 않습니다.

참고 항목

참조

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l