2008年3月4日 星期二

[C++] warning C4995: 'strcpy': name was marked as #pragma deprecated

當你使用 strcpy 複製字串時, 在 Visual Studio 2005 以上的版本會遭遇到 deprecated 的警告.

會出現這種警告, 主要是因為 你使用的 strcpy function 不安全.

所以你可以用 strcpy_s 代替.

例如:

------------------------ code -----------------

char[100] strIPAddress;

strcpy(strIPAddress,"192.168.0.140");

換成

strcpy_s(strIPAddress, 100, "192.168.0.140");

 

by Jing

 

延伸資訊:

http://msdn2.microsoft.com/en-us/library/ms175759.aspx

2 則留言:

  1. JING您好
    我在使用VC上遇到一個問題,冒昧想請問您。因研究上需要使用MIT開發之GALIB,http://lancet.mit.edu/ga/
    http://lancet.mit.edu/ga/dist/

    試過多種方式,但一直無法在VC6.0上正確引入,不知您是否能幫我解決呢?冒昧之處敬請見諒。

    BRIAN

    回覆刪除
  2. 你應該是下載 galib244-win.zip 這個檔吧.

    編譯 library 的方法:
    Step 1: 打開 galib244-win\projects\galib.dsw
    Step 2: 選擇要編譯的 project 為 library.
    Step 3: 設定變數使用 NO_STREAMS
    方法: 可以在 Project Properties 裡面, C++ Commandline 中加入下面這行
    /D "NO_STREAMS"

    另外, 也在 Include 的 Path 加上你的 VC include 目錄.

    這樣應該就可以完成編譯.

    example 的編譯:
    因為他的 source code 只有提供 iostream.h 這個舊的 io 範例.
    所以你只要稍微修改成你熟悉的 io 即可.
    例如我就會把

    #include [iostream.h] //<-- 換成角刮號

    #include [fstream.h] //<-- 換成角刮號

    改成, 我習慣使用的
    #include [iostream]//<-- 換成角刮號

    #include [fstream]//<-- 換成角刮號
    using namespace std;

    這樣就會編譯成功了.

    祝你順利.


    by jing

    回覆刪除