首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VS2012 MFC sprintf 編譯錯誤 C4996:改用 sprintf_s 或定義 _CRT_SECURE_NO_WARNINGS

     編輯:程式設計綜合問答

錯誤訊息

error C4996: 'sprintf': This function or variable may be unsafe.
Consider using sprintf_s instead.
To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

原因

VS2012 起 CRT 強制推廣安全版本(_s 後綴),sprintf 被標記棄用,預設視為錯誤(而非警告)。

三種解法

  1. 改用 sprintf_s(推薦):
    sprintf_s(cc, sizeof(cc), "=%.0fKg", aa); // 必須傳緩衝區大小
    
  2. 專案屬性定義巨集:
    Configuration Properties → C/C++ → Preprocessor → Preprocessor Definitions 加入 _CRT_SECURE_NO_WARNINGS,保留舊寫法不報錯。
  3. 原始碼最前方定義(在所有 #include 之前):
    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    

補充:同類函數對照表

舊函數安全版本關鍵差異
sprintfsprintf_s需傳 buffer size
strcpystrcpy_s需傳 destination size
strcatstrcat_s需傳 destination size
scanfscanf_s需傳 buffer size

遷移專案時建議批次替換為安全版本,長遠受益。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved