2008/01/09

Visual Studio 2005 Warnning Deprecated Function

프로젝트를 VS2002 에서 VS2005로 바꾸는데 있어 프로젝트를 마이그레이션 한 후 빌드를 해보니 무수한 경고 메세지가 쏟아져 나왔다. 대부분의 에러는 함수가 안전하지 않다고 다른 함수로 변경하라는 메세지 이다.

이 메세지를 무시하려면 다음을 입력해 주면되지만...

#pragma warning(disable:4996)

아무래도 경고 메세지를 없애는게 좋을듯 싶어 관련 정보를 찾아 보았다.

Visual Studio 2005로 버전업 하면서 몇몇 CRT 함수들이 "_s" 라는 말꼬리를 붙여 추가되었다.

문자열 버퍼를 사용하는 CRT 함수들이 예전에는 char형 포인터만 넘겨주면 되었는데 2005에서는 대상버퍼의 크기를 함께 넘겨주어야 한다. 좀더 안전성을 추구하는 모양이다. 그래서 "_s" 라는 말꼬리가 붙었나보다.

다음은 sprintf 함수의 예이다.
int sprintf(
char *buffer,
const char *format [,
argument] ...
);

int sprintf_s(
char *buffer,
size_t sizeOfBuffer, // Output 버퍼의 크기
const char *format [,
argument] ...
);


Deprecated CRT Functions  : 보다 자세한 내용과 함수 목

Original Post : http://neodreamer-dev.tistory.com/20

No comments :

Post a Comment