IT_Programming/Dev Tools

[VS.NET 2005 _ VC++] deprecated 관련 경고 메시지 나타나지 않게 하기

JJun ™ 2008. 12. 8. 20:04

char str[30];

strcpy(str, "Hello, world");

 

위 코드를 Visual C++ 6.0에서 컴파일 하면 아무런 오류 및 경고 없이 정상적으로 컴파일 된다.

그러나 Visual C++ 2005에서 컴파일을 하면 다음과 같은 경고 메시지가 나온다.

 

'warning C4996 : 'strcpy'이(가) deprecated로 선언되었습니다.'

 

위 경고는 strcpy 함수가 향후 최신 버전의 Visual C++ 프로그램에서는 해당 함수의 지원을 중단할 것이므로 사용하지 않기를 권고하는 것이다. 대신 MS에서는 보안을 강화한 strcpy_s 함수를 사용할 것을 권장한다.

 

따라서 위의 예제를 아래와 같이 바꾸면 된다.

 

char str[30];

strcpy_s(str, 30, "Hello, world");

 

이렇게 작성하면 경고가 발생하지 않는다.

deprecated 관련 경고 메시지는 프로그램을 빌드하는데 별다른 영향을 주지 않지만,

빌드할 때마다 다수의 경고 메시지가 나타나는 것을 보기 좋은 현상이 아니다.

 

또한, strcpy는 C/C++ 표준 함수인데 굳이 MS의 strcpy_s 함수를 사용하는 것은 좋은 모양새도

아니뿐더러, 리눅스와 같은 다른 OS에서 다른 컴파일러로 컴파일하면 또 다시 오류가 발생할 것이다.

 

그러므로 단순히 표준 함수를 그대로 사용하면서 deprecated 관련 경고를 나타나지 않게 하는

방법이 있다. Visual C++ 2005 메뉴 중 [프로젝트] -> [속성] 을 선택하면 '속성 페이지 대화상자'가

나타난다. 여기서 왼쪽 항목 중 [구성속성] -> [C/C++] -> [전처리기] 항목에서

오른쪽 '전처리기 정의' 항목에 _CRT_SECURE_NO_DEPRECATE 문장을 추가하면

컴파일러는 CRT 보안관련 경고 메시지를 출력하지 않는다.