3 回答

TA貢獻1772條經(jīng)驗 獲得超8個贊
看起來Microsoft已經(jīng)棄用了許多使用緩沖區(qū)來提高代碼安全性的調(diào)用。但是,他們提供的解決方案不是便攜式的。無論如何,如果您對使用其調(diào)用的安全版本(例如fopen_s)不感興趣,則需要在包含的頭文件之前放置_CRT_SECURE_NO_DEPRECATE的定義。例如:
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
也可以將預(yù)處理器指令添加到您的項目設(shè)置中,以對項目下的所有文件生效。為此,將_CRT_SECURE_NO_DEPRECATE添加到項目屬性->配置屬性-> C / C ++->預(yù)處理程序->預(yù)處理程序定義。

TA貢獻1887條經(jīng)驗 獲得超5個贊
好吧,您可以添加:
#pragma warning (disable : 4996)
在使用fopen之前,但是您是否考慮過按照警告提示使用fopen_s?它返回一個錯誤代碼,允許您檢查函數(shù)調(diào)用的結(jié)果。
僅禁用不推薦使用的功能警告的問題在于,Microsoft可能會在更高版本的CRT中刪除有問題的功能,從而破壞您的代碼(如注釋中所述,在這種情況下,使用fopen不會發(fā)生這種情況,因為它是C&C ++ ISO標(biāo)準(zhǔn))。
添加回答
舉報