연구실/파편화된 기록들
[펌] vs2005 C4996 경고 해결 방법 / _CRT_SECURE_NO_DEPRECATE
최익필
2008. 9. 11. 15:23
출처 : http://navylela.tistory.com/210
컴파일 시 발생하는 C4996 경고는 아래 프리프로세서로 없앨 수 있다.
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_WARNINGS
하지만 이건 경고문만 없애주는 것이지 근본적인 해결책은 아니다.
근본적으로 문제를 해결하려면
경고문에서 나타나듯이 사용한 함수명_s 와 같은 형식으로 바꾸어서
필요한 파라미터를 더 추가해주고 사용하면 된다.
MS에서 기존 함수의 보안문제(?)로 인해 함수를 새로 정의해버렸다고 하며 사용을 권하고 있다.
만일 unix 에서도 돌아가야 할 프로그램이라면
ifdef - endif 문을 사용하여 각각 플랫폼에서 작동할 함수에 대해
모두 구현해주어야 한다.
#ifdef WIN32
scanf_s( ... );
#elseif UNIX
scanf( ... );
#endif
컴파일 시 발생하는 C4996 경고는 아래 프리프로세서로 없앨 수 있다.
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_WARNINGS
하지만 이건 경고문만 없애주는 것이지 근본적인 해결책은 아니다.
근본적으로 문제를 해결하려면
경고문에서 나타나듯이 사용한 함수명_s 와 같은 형식으로 바꾸어서
필요한 파라미터를 더 추가해주고 사용하면 된다.
MS에서 기존 함수의 보안문제(?)로 인해 함수를 새로 정의해버렸다고 하며 사용을 권하고 있다.
만일 unix 에서도 돌아가야 할 프로그램이라면
ifdef - endif 문을 사용하여 각각 플랫폼에서 작동할 함수에 대해
모두 구현해주어야 한다.
#ifdef WIN32
scanf_s( ... );
#elseif UNIX
scanf( ... );
#endif