CRT 함수 사용시 deprecated 경고 표시하지 않기

2008. 7. 23. 11:10Programming 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 을 추가한다.