在項目屬性頁-->配置屬性-->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下一個字元占2個byte)作為單位,而不是bytes(字節).
8. 記住所有的sizes(大小,非長度,緣由同上)包含了字串結束符'\0'(即別忘了很多情況下size需要+1)。
9. 調試的時候監視數據0xfd。 (在調試版本下)0xfd將會被填充在數據(buffer,通常是字串)的結尾處。如果運行非你所願,可能會得到一個長度錯誤。
10. 檢查所有的錯誤。 許多新函數相比舊函數,能返回(表示)錯誤資訊(的數值)。
 
From:OSChina        
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()