在Visual Studio 2005 C ++編譯器上,當我的代碼使用fopen和此類調用時,出現以下警告。1>foo.cpp(5) : warning C4996: 'fopen' was declared deprecated1> c:\program files\microsoft visual studio 8\vc\include\stdio.h(234) : see declaration of 'fopen'1> Message: 'This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'我該如何預防?
3 回答

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

慕工程0101907
TA貢獻1887條經驗 獲得超5個贊
好吧,您可以添加:
#pragma warning (disable : 4996)
在使用fopen之前,但是您是否考慮過按照警告提示使用fopen_s?它返回一個錯誤代碼,允許您檢查函數調用的結果。
僅禁用不推薦使用的功能警告的問題在于,Microsoft可能會在更高版本的CRT中刪除有問題的功能,從而破壞您的代碼(如注釋中所述,在這種情況下,使用fopen不會發生這種情況,因為它是C&C ++ ISO標準)。
- 3 回答
- 0 關注
- 1319 瀏覽
添加回答
舉報
0/150
提交
取消