티스토리 뷰

난데없는...warning...
분명 Visual Studio C++ 6 에서는 잘되던게...
.\autocopyDlg.cpp(221) : warning C4996: 'wcscpy'이(가) deprecated로 선언되었습니다.
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\string.h(250) : 'wcscpy' 선언을 참조하십시오.
1>        메시지: 'This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

아주 당황스럽다...
물론 wcscpy_s 로 바꾸던가 #define _CRT_SECURE_NO_DEPRECATE 1 로 define 하거나  #pragma warning(disable:4996) 하면 안볼수도 있지만...웬지 찝찝...
일부 VisualStudio에서 #define _CRT... 로 해도 warning을 볼수 있는데 직접 프로젝트 속성(ALT+F7)에 /D "_CRT_SECURE_NO_DEPRECATE"를 직접 입력하면 된다...제길...
...
wcscpy(temp,szPath);
...

이 구문인데...temp와 szPath 모두 TCHAR에 같은 배열크기로 지정되었음에도 불구하고...
도대체 왜? 아래는 MSDN에서 오류메세지에 대해 설명했다...
오류메세지
'function'이(가) deprecated로 선언되었습니다.
'function': was declared deprecated
컴파일러에서 deprecated로 표시하지 않은 함수를 발견했습니다. 이 함수는 이후 릴리스에서 제공되지 않을 수 있습니다. 다음 예제와 같이 warning pragma를 사용하여 이 경고를 해제할 수 있습니다.
C4996은 함수를 선언한 줄과 사용한 줄에서 발생합니다.
<hash_map> 및 <hash_set> 헤더 파일의 멤버를 std 네임스페이스에 사용하면 이 경고가 발생합니다. 자세한 내용은 stdext 네임스페이스를 참조하십시오.
일부 CRT 함수는 보안이 강화된 새 함수로 대체되어 더 이상 사용되지 않습니다. 더 이상 사용되지 않는 CRT 함수에 대한 자세한 내용은 Security Enhancements in the CRT를 참조하십시오.
보안상의 이유로 더 이상 사용되지 않는 MFC나 ATL 함수를 사용하는 경우에도 C4996이 발생할 수 있습니다. 이러한 경고가 발생하지 않게 하려면 _AFX_SECURE_NO_DEPRECATE_ATL_SECURE_NO_DEPRECATE를 참조하십시오.


처음엔 언듯...이해가 안되더라니...번역이라고 해놓은게...
프로그래머가 해놓은 번역이 아닌건 확실해....ㅜㅜ
deprecate의 사전전 의미...네이버에서 발췌


결론은 보안상 또는 Upgrade로 인해 다음 버전에서는 지원을 안할수 있으니 조심하라는 의미...
제길...
신고
댓글
댓글쓰기 폼