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 보안관련 경고 메시지를 출력하지 않는다.
'IT_Programming > Dev Tools' 카테고리의 다른 글
[펌] TPTP+WTP 자바 웹 애플리케이션 성능 테스트 (0) | 2009.02.16 |
---|---|
[펌] Ant 소개 (by LoveLazur) (0) | 2009.01.30 |
ANT 기본 정리 1 (0) | 2008.11.24 |
[펌] vs 2005 디버깅 안 될때... (0) | 2008.11.20 |
[HTML] 소스보기 프로그램을 메모장이 아닌 다른 프로그램으로 바꾸기 (0) | 2008.07.31 |