'스페이스가족이야기/SW개발이야기및팁'에 해당되는 글 37건

  1. 2009/06/08 #pragma deprecated로 표시되었습니다. - SamJackson
  2. 2009/06/03 DirectShow로 mp3 재생하기 - SamJackson
  3. 2009/06/02 error LNK2001 - Directx 관련 애러 - SamJackson
  4. 2009/05/15 윈도 종료를 도중에 취소하기 (1) - phas
  5. 2009/05/12 [DirectShow] qedit.h 추가후 애러 (error C2504) - SamJackson
void RetailOutput(TCHAR *tszErr, ...)
{
    TCHAR tszErrOut[MAX_PATH + 256];

    va_list valist;

    va_start(valist,tszErr);
    wvsprintf(tszErrOut, tszErr, valist);
    OutputDebugString(tszErrOut);
    va_end (valist);
}

warning C4995: 'wvsprintf': 이름이 #pragma deprecated로 표시되었습니다.
warning C4995: 'wvsprintfA': 이름이 #pragma deprecated로 표시되었습니다.

가볍게 천천히 알아보도록 하죠~

아무튼 이런 경고가 뜨는 함수들은 버퍼 오버플로우나 보안쪽으로 문제가 있어서 안전하지 못한 함수들이랍니다.

어쩌면 MS는 이 함수들을 사용하지 말구 다른 함수들을 썼으면 하는 바램도 있겠죠?
(다음 컴파일러에서 지원하지 않을 경우도 있겠죠?)

http://msdn.microsoft.com/en-us/library/8ef0s5kh(VS.80).aspx

위 링크 참조하세요^^

이런 문제를 해결하려면 경고가 뜬 함수를 사용하지 않고 MS에서 추천하는 보안이 된 함수를 사용하는 겁니다.

물론 바꾸는 건 간단한 겁니다.....라고 하고 싶지만 어려운 경우도 있습니다.

간단히 이런 얘가 있습니다.
Fp = fopen(strfile.c_str(), "wb");
->fopen_s(&Fp, strfile.c_str(), "wb");

이런 워닝 메시지는 간단히 해결할 수 있는데 복잡한 부분도 있습니다.

문제는 오픈 소스에서 넣었으면 더욱더 앞길이 막막합니다.

(1)#pragma warning(disable:4995)

이렇게 적어주면 워닝메시지는 나오지 않습니다만 후에 문제가 될 소지가 있겠죠?

워닝 메시지가 여간 많으면 어디서 오류인지도 모르잖아여~

그리고 워닝메시지를 지운다는게 해결해야만 하는 워닝메시지도 있습니다.

값을 반환하지 않았다거나 초기화되지 않은 변수를 사용했다거나요~

워닝 메시지가 여간 많으면 어디서 오류인지도 모르잖아여~

하지만 워닝메시지를 지운다는게 해결해야만 하는 워닝메시지도 있습니다.

값을 반환하지 않았다거나 초기화되지 않은 변수를 사용했다거나요~

주저리주저리했는데 결론은 MS에서 추천한 보안된 함수를 사용하는 겁니다.

경고도 깔끔하게 MSDN을 참고하면서 처리를 해나가면 되겠죠^^

이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/06/08 17:49 2009/06/08 17:49