warning C4996: deprecated...

난데없는...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로 인해 다음 버전에서는 지원을 안할수 있으니 조심하라는 의미...
제길...
신고
Trackback 1 Comment 2
prev 1 ··· 194 195 196 197 198 199 200 201 202 ··· 652 next


티스토리 툴바