2008. 7. 23. 11:10ㆍProgramming Languages/C++
Visual C++ 6.0 Project를 2005 or 2008로 Conversion하여 작업을 하다 보면
Compile 시에 CRT 함수들에 대한 많은 Deprecated Warning 을 볼 수가 있다.
물론 권장하는 보안 버전 함수(_s)를 사용하는 것이 이롭겠지만,
가끔은 잘 동작하고 Test 된 코드에 대해서는 이러한 Warning을 막을 수가 있다.
Visual C++ 2005의 새로운 기능 중 하나는 보안 버전을 갖는 CRT 함수를 제공하는 것이다.
(http://msdn2.microsoft.com/ko-kr/library/ms235429(vs.80).aspx)
보안에 약했던 기존 버전의 여러 함수가 이제는 사용되지 않는다.
strcpy와 같은 string 함수들과 open등과 같은 POSIX 함수들은 더 이상 사용되지 않는다.
보안 기능이 추가된 함수의 목록은 링크를 선택해 보기 바란다.
http://msdn2.microsoft.com/ko-kr/library/wd3wzwts(VS.80).aspx
이러한 함수는 오류를 더 나은 방식으로 처리하고, 버퍼를 더 엄격하게 제어하여 일반적인 보안 결함이 발생하지 않도록 한다.
모두 일일이 보안 기능이 추가된 CRT 함수로 변경하기가 어려우니, 이미 검증된 함수의 경우는 아래와 같이 정의하여 경고 메시지를 피할 수 있다.
1. stdafx.h 파일에 아래와 같이 추가하거나,
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
* Secure Function 사용시 아래의 Macro를 추가한다.
#define _CRT_SECURE_NO_DEPRECATE
2. Project->Setting에서 Preprocessor 부분에 _CRT_SECURE_NO_WARNINGS 을 추가한다.