LPTSTR CPreView::CopyString(LPTSTR  lpszSrc)
{
    // Local variables
    LPTSTR    lpszDest;
    int       iStrLen;

    //  Initialize variables
    lpszDest = NULL;

    if (lpszSrc == NULL)
{
        DebugMsg(__TEXT("ICMVIEW.C : CopyString : lpszSrc == NULL\r\n"));
        return(NULL);
}
    iStrLen = ((int)(lstrlen(lpszSrc) +1) * sizeof(TCHAR));
    lpszDest = (LPTSTR)GlobalAlloc(GPTR, iStrLen);
    _tcscpy(lpszDest, lpszSrc);
    return(lpszDest);
}   // End of function CopyString这段代码是从VC6.0中拷贝到VC2005之后出现警告
e:\vc++\transformer\transformer\preview.cpp(357) : warning C4996: “wcscpy”被声明为否决的
1>        d:\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.”大家看一下有什么办法解决,不改变设置

解决方案 »

  1.   

    可以无视,或者在StdAfx.h里加入#define _CRT_SECURE_NO_DEPRECATE
      

  2.   

    wcscpy unicode就用这个
    strcpy 多字节用这个
      

  3.   

    strcat_s,wcscpy_s,都在屁股后面加个_s,多的参数就是填buffer的size
    http://topic.csdn.net/u/20110228/08/4612f047-61d6-48b8-a82e-bd77eff48133.html
      

  4.   

    但是我的实际代码里面用的是_tcscpy,这里只是在UNICODE环境下翻译成wcscpy了
      

  5.   

    dream238能解释一下这个是什么意思吗?
      

  6.   

    提示说的很清楚了:
    This function or variable may be unsafe. Consider using wcscpy_s instead
      

  7.   

    strcat_s,wcscpy_s,都在屁股后面加个_s,多的参数就是填buffer的size
    为了增强安全性
      

  8.   

    1) 修改程序 strcat_s,wcscpy_s,都在屁股后面加个_s,多的参数就是填buffer的size
    2) 禁止这个警告
      

  9.   

    提示也说明白了。To disable deprecation, use _CRT_SECURE_NO_DEPRECATE.,可以使用定义宏_CRT_SECURE_NO_DEPRECATE来关闭这个否决。这样的话就不会有这个warning了,你原来的拷贝函数也照样可以使用。
    其实这个warning只是建议性的提示,推荐你用另外一个函数来替代从而更安全,当然,旧的函数也是可以使用的。
      

  10.   

    大家没有明白我的意思,我知道在wcscpy后面加一个_s就行了,wcscpy_s是在UNICODE环境下的函数,如果在ANSI下呢,我的代码那里写的是_tcscpy,而不是wcscpy,谢谢
      

  11.   

    你可以使用_tcscpy_s,无非就是检测边界而已
      

  12.   

    那就写成_tcscpy_s啊
    照猫画虎吗