为了账号安全,请及时绑定邮箱和手机立即绑定

fopen不建议使用的警告

fopen不建议使用的警告

青春有我 2019-12-26 09:18:46
在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条经验 获得超7个赞

看起来Microsoft已经弃用了许多使用缓冲区来提高代码安全性的调用。但是,他们提供的解决方案不是便携式的。无论如何,如果您对使用其调用的安全版本(例如fopen_s)不感兴趣,则需要在包含的头文件之前放置_CRT_SECURE_NO_DEPRECATE的定义。例如:


#define _CRT_SECURE_NO_DEPRECATE

#include <stdio.h>

也可以将预处理器指令添加到您的项目设置中,以对项目下的所有文件生效。为此,将_CRT_SECURE_NO_DEPRECATE添加到项目属性->配置属性-> C / C ++->预处理程序->预处理程序定义。


查看完整回答
反对 回复 2019-12-26
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

好吧,您可以添加:


#pragma warning (disable : 4996)

在使用fopen之前,但是您是否考虑过按照警告提示使用fopen_s?它返回一个错误代码,允许您检查函数调用的结果。


仅禁用不推荐使用的功能警告的问题在于,Microsoft可能会在更高版本的CRT中删除有问题的功能,从而破坏您的代码(如注释中所述,在这种情况下,使用fopen不会发生这种情况,因为它是C&C ++ ISO标准)。


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 1230 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信