warning C4996: deprecated...
2006/06/21 15:48
난데없는...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로 인해 다음 버전에서는 지원을 안할수 있으니 조심하라는 의미...
제길...
2006/06/21 15:48 2006/06/21 15:48
Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다

  1. Subject: #prama 로 deprecated 에러:4996 무시해버리기.

    Tracked from 지나간 삶 2007/04/08 10:33  삭제

    http://www.winapi.co.kr에 문법에 관한 설명은 어느 정도 되어 있다.oncepackwarning#pragma warning (disable:4996) //2005의 deprecated에러를 무시한다.를 추가한다면 에러자체를 띠우지 않을 수 있다. stdio.h 헤더파..

  • TWEETY 2006/06/22 08:41  댓글주소  수정/삭제  댓글쓰기
    호오~ 유용해..

  • 구글달력과 SKYPE
    2006/06/15 09:46

    구글메일...구글어스...에 이은 구글 달력...
    구글에서 또 사고치지 않나 싶다...
    그동안 수많은 일정관리 프로그램을 써봤지만 딱히 맘에 드는게 없었다...
    그나마 마이크로소프트의 아웃룩이 제일 낳지 않았나 싶다...하지만 집과 회사 어디에서 쓰기에는 싱크라는 기능이 부족했다...
    하지만 구글 달력은 인터넷이 되는곳이면 어떤 설치 프로그램도 필요없이 모든 기능을 지원한다.
    와우~....
    뿐만 아니라 달력을 공개하여 다른 사람들과 공유할수도 있으며 특정약속은 안보이도록 지정할수도 있다. 더구나 API를 제공해서 자기 홈페이지에서도 활용할수 있다는데...(내 홈에도 적용해봐야겠어...)

    전에 있던 회사에서 개발팀간 스케쥴 조정을 아웃룩으로 했는데...
    구글달력으로 충분히 할수 있겠다...시도해 볼만한 가치가 있다.
    예를 들면 회의시간을 잡을때 초대할 사람들의 스케쥴을 확인하고 빈시간에 맞춰 모든 사람들에게 초대 메일을 보내면 메일을 받은 사람들은 초대에 응하거나 거절할수 있다.

    구글 너무 멋진걸...


    또 하나 SKYPE...
    메신저라기 보다는...전화통화에 중점을 둔 프로그램...
    일단 SKYPE가 설치되어 있는 사람들끼리는 무료로 통화가 가능하며 최대 4명까지도 가능하다...이거 얼마나 유용한지 몰라...

    SKYPE out
    SKYPE가 있는 컴퓨터에서 일반 전화 또는 핸드폰으로 거는 것을 말한다.

    SKYPE in
    SKYPE 번호를 부여 받으면 외부에서 나에게 전화를 걸수 있다.

    일단 컴퓨터와 컴퓨터가 아닌 일반전화 또는 핸드폰으로 전화를 걸기 위해서는 Skype 크레딧 또는 쿠폰을 구매하여야 한다.

    요금안내


    한국 시내전화를 걸면 분당 23원...핸드폰으로 걸면 87원...
    일본으로 전화를 거는내 분당 28원...핸드폰으로 걸면 분당 180원정도...
    프랑스는 각각 25원...242원...
    이정도면 괜찮지 않을까 하는데...
    세상 참 좋아졌다니깐...

    자자...
    구글달력과 SKYPE를 등록해서
    저랑 달력을 공유하고...
    SKYPE로 전화통화를 해보아요...
    2006/06/15 09:46 2006/06/15 09:46
    Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다

  • TWEETY 2006/06/15 11:24  댓글주소  수정/삭제  댓글쓰기
    내가 울 회사 거래선이 죄다 외국이길래.
    skype써보자니깐.. 어쩌구 저쩌구...
    안정성.. 어쩌구...하면서
    시대에 뒤떨어진 이야기를 하길래...
    넵! 비싼 전화세내는게 젤 안전합니다.
    라고 해줬어. -_-V

    근데, 구글 메일 쓰는 사람이 너무 드물어.. -_-^
    • hongyver 2006/06/15 13:17  댓글주소  수정/삭제
      전화요금 달라고 해서...
      SKYPE로 걸고...남는돈...너가져...
      구글 달력 등록했냐?
      함 공유 해볼까?
  • TWEETY 2006/06/15 15:57  댓글주소  수정/삭제  댓글쓰기
    어케 하는건데요?
    • hongyver 2006/06/15 16:32  댓글주소  수정/삭제
      CreateEvent할때...
      오른쪽 아래에 보면 Option에 보면 Privacy에 선택할수 있어

      달력관리 및 공유는...
      왼쪽 아래에 보면 manage calendars에 보면
      Share this calendar 를 보면 될듯...
  • 찬빠 2006/06/16 01:56  댓글주소  수정/삭제  댓글쓰기
    Skype나온지가 언젠데...
    벌써 다음이랑 제휴해서 뭔가 하고있긴한데요...
    http://skype.daum.net
    글쎄요...
    단말기쪽이 앞으로 기대되긴하는데 아직은 좀 이른듯...
    • hongyver 2006/06/16 08:39  댓글주소  수정/삭제
      SKYPE가 언제 나왔는데?
      TWEETY야...SKYPE를 우리가 몇년전 부터 썼는지 말해줘라...
      그리고 TWEETY가 다음이 싫데잖아...버럭 :(

      넌 쓰지마...
      ...하긴 넌 외국 나갈일 없으니 쓸일이 없긴 하겠다..:)

      구글달력은 안쓸텨? 고건 괜찮던데...자바알면 홈에다 붙이기(?)도 쉬울테고...뭐가 나올법한데..
      아무튼...내일 양떼목장 잊지마...또 늦잠자면 묻어버린다...
  • TWEETY 2006/06/16 08:29  댓글주소  수정/삭제  댓글쓰기
    그래서 전 다음이 싫어요.. -_-
    • hongyver 2006/06/16 08:40  댓글주소  수정/삭제
      구글 달력 공유 해봤더니...
      Privacy 한 글은 busy로만 나오더라...ㅋㅋㅋ
      아무튼...재밌겠어..
  • maro 2006/06/16 08:45  댓글주소  수정/삭제  댓글쓰기
    우와우와 ... 낼 양떼목장으로 출사 가는구나
    훔훔 ... !
    토요일은 정모땜시 꼼짝못하는뎅
    난 일요일에 혜화동이나 가야것구나

    SKYPE로 건 전화 받아봤는데
    깨끗하고 좋던뎅 ... 일반전화로 거는건 20원이라던데
    요즘 세상좋아욤
    외국에 있는 사람에게 문자도 보낼 수 있고 ㅎ ㅎ
    • hongyver 2006/06/16 09:44  댓글주소  수정/삭제
      계획은 양떼목장하고 추암...속초까지...돌아볼 생각이야...
      같이가면 좋은데..다른 지인들하고 가는거라...
      참..정모가 토요일이야? 원래 주중 아니였나?

      그게 궁금한데...외국에 있는 사람이...
      핸드폰을...한국 핸드폰을 들고 있어야 되잖아...그럼 로밍?
      아니면 annyeong 이렇게 보내야 하는 난감함이...;)
    • maro 2006/06/19 09:34  댓글주소  수정/삭제
      정모는 수요일인데
      기타 테스트같은건 토요일에 해서 .. ㅎㅎ

      그리고 문자 대화신청하면
      핸펀없이 문자를 볼수 있데요
      문자대화로 보내지만 않음 던 안나가공 ^^
  • TWEETY 2006/06/16 14:58  댓글주소  수정/삭제  댓글쓰기
    어딘가에 busy만 보이게 하는 옵션도 있었던거 같어요. ㅋㅋ 궁금했었는데... 내 스케줄은 어떻게 보이나 하구..
    좋긴 좋은거 같어. pda나 tablet pc같은거 들고 다니는 사람한테는 정말 유용할 듯. ^^

    난 아직도 종이수첩봤다.. pc봤다...postit에 적어놓은거 봤다.. 정신없어요..ㅋㅋㅋ (아날로그 사랑~)
  • 니하오마 2006/06/19 16:12  댓글주소  수정/삭제  댓글쓰기
    뭔 얘기들을 하는지 컴맹... -.-;
  • Boss 2019/10/08 09:22  댓글주소  수정/삭제  댓글쓰기
    Wielkie dzięki dla admina za tak obszerne rozwinięcie tego tematu. Dokładnie tego szukałam.
    Muszę przyznać, że bardzo zaciekawił mnie ten artykuły, mimo, że aż tak nie interesuję się tą problematyką. Zapraszam do mnie limuzyna do ślubu Łódź
  • Sebastian 2019/10/08 12:26  댓글주소  수정/삭제  댓글쓰기
    Siedzę w tej problematyce już kawał czasu, lecz bez wątpienia sam był tego lepiej nie scharakteryzował. Brawa dla autora tekstu. Zapraszam na moje www zdjęcia ciążowe Łódź.
  • Kisiel 2019/10/08 12:31  댓글주소  수정/삭제  댓글쓰기
    Zapraszam do mnie rękawice motocyklowe
  • Bansek 2019/10/08 14:20  댓글주소  수정/삭제  댓글쓰기
    Warto było poświęcić kilka chwilek na zapoznanie się z treścią, bo dużo dowiedziałem dowiedziałam się z tych wpisów. Odwiedź też moją stronę laptopy Łódź
  • Psycholog 2019/10/08 14:56  댓글주소  수정/삭제  댓글쓰기
    Wielkie dzięki dla admina za tak wyczerpujące rozwinięcie tematu. Właśnie tego poszukiwałem.
    Muszę przyznać, że ogromnie zainteresował mnie ten teksty, pomimo, że aż tak nie interesuję się tą problematyką. Zapraszam do odwiedzenia mojej strony Psycholog Dziecięcy Łódź
  • Kuba 2019/10/08 15:30  댓글주소  수정/삭제  댓글쓰기
    Autorowi należą się brawa za tak dogłębne zajęcie się tymi zagadnieniami. Zapraszam do mnie na stronę odwierty Łódź
  • Andrzej 2019/10/08 17:37  댓글주소  수정/삭제  댓글쓰기
    Na prawdę warto było poświęcić chwilę na lekturę, bo dużo dowiedziałem dowiedziałam się z tych artykulików. Odwiedź też moją stronę Dentysta Łódź
  • AgenziaInvestigativa 2019/10/08 18:07  댓글주소  수정/삭제  댓글쓰기
    No, no za taki artykuł powinni przyznać literacką Nagrodę Nobla. A tak poważnie, to ogromne dzięki za rozwinięcie tematu i wytłumaczenie paru spraw. Zapraszam do mnie Detective Privato Bergamo

  • ASSERT와 Exception
    2006/06/14 09:38
    ASSERT
    ...는 내부 설계에 대하여 변수가 원하는 내용을 가지고 있는지 확인하는 데 사용한다. 라는게 사전적 의미이고 도대체 어디다 어떻게 써야 할지는 감이 안온다면 아래를 보자...

    int GetLen()
    {
        int size;
       ...
      return size;
    }
    int div(int a, int b)
    {
      int c;
      c=a/b;
      return c;
    }

    void main()
    {
        char *p;
        int size;
      int ans;

       ans = div(10,5);
     
    size=GetLen();
        p=(char *)malloc(size);
        strcpy(p,"test");
        free(p);
    }

    1. div 함수
    두수의 나누기를 위해서 div 라는 함수를 작성했다.
    main 에서 div 함수를 호출하여 10을 5로 나눈 결과 값을 돌려받는다. 아무문제가 없어 보이는가?
    만약 div(10,0)과 같이 함수를 호출한다면 에러가 발생할것이다.
    div 내에서 0으로 나눌수 없도록 하는것도 중요하지만 div 라는 함수를 사용하는 개발자들이 올바른 인자를 넘겨야 하는것이 보다 중요하다.
    여기서 우리는 div 함수 앞 부분에 ASSERT(b!=0); 이란 assert 조건을 추가 함으로써 div 라는 함수를 사용하는 다른 개발자들로 하여금 실수를 예방할수 있다.

    2. GetLen 함수
    GetLen 는 메모리 확보를 위한 길이 또는 크기를 돌려받는다.
    만약 길이 또는 크기가 0으로 돌려받아졌을 경우는 어떻게 될까?
    strcpy 또는 free에서 문제가 발생할 가능성이 많다.
    이 또한 우리가 리턴 전에 ASSERT(size!=0); 을 추가하여 불분명한 버그에서 벗어날수 있다.

    위의 2가지 예제로 모두 다 설명할수는 없겠지만 대략적으로 나마 ASSERT를 어디다 어떻게 써야할까의 막연함에서 조금이나마 탈피할수 있을것이다.
    사실 ASSERT를 어디다 어떻게 쓰는냐는 ASSERT를 쓰냐 안쓰냐 만큼의 중요한 문제이다.

    그 외에 좋은점으로....
    버그발생지점을 정확하게 파악할수 있고,
    협업에서 다른 개발자로 하여금 인수나 리턴값에 주의를 요하게 할수 있고,
    개발 자체가 버그 테스트로 버그를 줄일수 있다.

    주의사항
    ASSERT내에는 가급적 하나의 조건식을 사용하고 릴리즈때 영향을 주는 코드 삽입 금지하도록 한다.
    외부 데이터 입력 변수에는 사용하지 않는다.
    메모리 할당 결과, 파일 열기 결과를 ASSERT 하지 않는다.
    (파일이나 메모리의 할당 실패는 assert를 발생하는게 아니라 에러메세지 박스를 출력해서 사용자로 하여금 조치를 취하도록 해야 한다.)


    EXCEPTION 예외
    ...란 의도한대로 프로그램이 진행되지 않고 다른 상황으로 흐름이 진행되는 상황을 할한다. 이런 예외가 발생했을때 적절한 조치를 취해줄 수 있는 절차를 구현하도록 문법을 정리해 놓은 것이 예외처리이다.

    우리가 흔히 if 처리했던 작업들이고 또 if문으로도 충분히 처리할수 있는 작업들이다. 그럼 왜! 예외처리를 사용하는가? 아래를 보자...

    예외처리를 하지 않은 경우...

    void main()
    {
        int x,y,r;

        printf("x 좌표 입력 : ");scanf("%d",&x);
        if (x < 0) {
             printf("%d는 음수이므로 잘못된 값입니다.\n",x);
             exit(-1);
        }
        printf("y 좌표 입력 : ");scanf("%d",&y);
        if (y < 0) {
             printf("%d는 음수이므로 잘못된 값입니다.\n",y);
             exit(-1);
        }
        printf("숫자 입력 : ");scanf("%d",&r);
        if (r < 0) {
             printf("%d는 음수이므로 잘못된 값입니다.\n",r);
             exit(-1);
        }

        gotoxy(x,y);
        printf("%d의 제곱근은 %.4f입니다\n",r,sqrt(r));
    }

    예외처리를 한 경우...

    void main()
    {
        int x,y,r;

        try {
             printf("x 좌표 입력 : ");scanf("%d",&x);
             if (x < 0) throw x;
             printf("y 좌표 입력 : ");scanf("%d",&y);
             if (y < 0) throw y;
             printf("숫자 입력 : ");scanf("%d",&r);
             if (r < 0) throw r;
        }
        catch(int a) {
             printf("%d는 음수이므로 잘못된 값입니다.\n",a);
             exit(-1);
        }

        gotoxy(x,y);
        printf("%d의 제곱근은 %.4f입니다\n",r,sqrt(r));
    }

    코드가 직관적이고 놀랄만하게 코드가 읽기 쉬워졌다. 프로그램의 안정성과 유지, 보수의 편의성은 증가하지만  프로그램이 비대해지고 느려지는 반대 급부를 쉽사리 무시할 수는 없다.


    2006/06/14 09:38 2006/06/14 09:38
    Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다