《轉》在VS2005下編譯was declared deprecated警告

在項目屬性頁-->配置屬性-->C/C++-->預處理器-->預處理器定義 添加:_CRT_SECURE_NO_DEPRECATE程序員

注意:Debug和Release都要添加安全

微軟解釋說非安全庫函數sprintf、sscanf、strcpy等都是不安全的,應該用sprintf_s、sscanf_s、strcpy_s取代函數

微軟提出了以下10點建議:
      1. 
不要認爲 strcpy_s  strncpy_s( 以及其餘的字符串函數)(在空間不夠的時候)會自動終止拷貝(truncate截斷,不截斷則意味着溢出).若是須要自動截斷,請使用strncpy_s (同時使用_TRUNCATE做爲長度參數) 
      2. 
記住fopen_s缺省是獨佔模式。如需共享使用文件,應該使用_sopen
      3. 
別忘了_dupenv_s, 它將比_getenv_s更容易使用,由於它能自動分配一個正確長度的內存(buffer)
      4. 
scanf_s中當心參數順序。
      5. 
肯定printf_s中格式字符串的正確。
      6. 
使用_countof(x)來取代sizeof(x)/sizeof(element). _countof將會正確的計算元素個數,並且若是x是一個指針,編譯器將會發出一個警告(來提醒程序員,僅針對C++編譯)
      7. 
記住全部的sizes(大小,非長度)都是使用characters(字符,unicode下一個字符佔2byte)做爲單位,而不是bytes(字節).
      8. 
記住全部的sizes(大小,非長度,原因同上)包含了字符串結束符'\0'(即別忘了不少狀況下size須要+1)
      9. 
調試的時候監視數據0xfd (在調試版本下)0xfd將會被填充在數據(buffer,一般是字符串)的結尾處。若是運行非你所願,可能會獲得一個長度錯誤。
      10. 
檢查全部的錯誤。 許多新函數相比舊函數,能返回(表示)錯誤信息(的數值)
spa

相關文章
相關標籤/搜索