首页 / 知识
关于Visual c ++:fopen不建议使用的警告
2023-04-12 09:52:00

fopen deprecated warning在Visual Studio 2005 C ++编译器上,当我的代码使用fopen和此类调用时,出现以下警告。
我该如何预防? 看起来Microsoft已经弃用了许多使用缓冲区来提高代码安全性的调用。但是,他们提供的解决方案不是便携式的。无论如何,如果您对使用其调用的安全版本(例如fopen_s)不感兴趣,则需要在包含的头文件之前放置_CRT_SECURE_NO_DEPRECATE的定义。例如:
也可以将预处理器指令添加到您的项目设置中,以对项目下的所有文件生效。为此,将_CRT_SECURE_NO_DEPRECATE添加到项目属性->配置属性-> C / C ++->预处理程序->预处理程序定义。 好吧,您可以添加:
在使用fopen之前,但是您是否考虑过按照警告提示使用fopen_s?它返回一个错误代码,允许您检查函数调用的结果。 仅禁用不推荐使用的功能警告的问题在于,Microsoft可能会在更高版本的CRT中删除有问题的功能,从而破坏您的代码(如注释中所述,在这种情况下,使用fopen不会发生这种情况,因为它是C&C ++ ISO标准)。 这只是微软的厚脸皮。"不推荐使用"表示标准委员会/组织在将来的标准语言/标准库版本中可能未提供的语言功能。无论该建议有多充分的依据,它都不会或不应该表示"我们单方面认为您不应该使用它"。 如果您的代码是针对其他操作系统(例如MacOSX,Linux)的,则可以使用以下代码:
我正在使用VisualStdio 2008。
如果单击此菜单或在项目窗口中按Alt + F7,则可以看到"属性页"窗口。 然后查看窗口左侧的菜单。
然后将 考虑使用可移植性库,例如glib或apache可移植运行时。这些通常可以为此类呼叫提供安全,便携式的替代方法。这也是一件好事,因为这些不安全的调用在大多数现代环境中已被弃用。 对于使用Visual Studio 2017版本的用户,似乎运行不安全操作所需的预处理器定义已更改。改用:
然后它将编译。 Microsoft的许多安全功能,包括fopen_s(),都是C11的一部分,因此它们现在应该是可移植的。您应该认识到安全功能在异常行为和返回值方面有所不同。另外,您还需要注意,尽管这些功能已经标准化,但它是标准(附件K)的可选部分,至少glibc(Linux上的默认设置)和FreeBSD的libc并未实现。 但是,我为此问题奋斗了几年。我在此处发布了一组较大的转换宏。,对于您的直接问题,请将以下代码放在包含文件中,并将其包含在源代码中:
当然,这种方法不会实现预期的异常行为。 如果要在许多平台上使用它,则可以使用注释定义如下:
我也遇到同样的问题。当我尝试添加opencv库时
我不是警告,而是错误。
我还使用了提到的预处理器指令。但这并不能解决问题。 我通过以下方法解决了它:
|
最新内容
相关内容
pythonpip怎么调用
pythonpip怎么调用,培训,工具,标准,管理,替代品,模块,以上,功能,更多,内容,pip是一个安装和管理Python包的工具,python安装包的工具有easy_inspython函数嵌套时怎么调用
python函数嵌套时怎么调用,培训,函数,周期,变量,嵌套,作用,定义,里面,上层,也就是说,python允许创建嵌套函数。也就是说我们可以在函数里面定python库怎么调用
python库怎么调用,培训,模块,代码,成员,别名,前缀,程序,语句,语法,上面,python使用import导入模块的语法,,主要有以下两种:import模块名1[as别名python怎么重新编译python
python怎么重新编译python,培训,环境变量,命令,里面,以上,文件,更多,内容,第一步,解压Python-3.6.4.tgz,tar-zxvfPython-3.6.4.tgz第二步,进入python子类怎么调用父类方法
python子类怎么调用父类方法,培训,代码,初始化,方法,函数,示例,时调,定义,对象,以上,python中类的初始化方法是__init__(),因此父类子类的初始python子类可以调用父类方法吗
python子类可以调用父类方法吗,培训,名称,资料,情况,地方,函数,参数,方法,表示,语句,python中的子类中的__init__()函数会覆盖父类的函数,一些python怎么调用实例方法
python怎么调用实例方法,代码,培训,方法,对比,参数,实例,空间,变量,定义,函数,在Python的类体中定义的方法默认都是实例方法,也示范了通过对象python如何调用函数
python如何调用函数,代码,培训,函数,名字,工作,处分,较大,变量,程序,定义,函数的定义及其应用所谓函数,就是把具有独立功能的代码块组织成为一python如何调用mysql
python如何调用mysql,培训,流程,一致,密码,数据,数据库,数据库连接,接口,语句,方法,DB-API是一个规范.它定义了一系列必须的对象和数据库存取python怎么调用类方法
python怎么调用类方法,培训,方法,实例,静态,定义,参数,属性,对象,关键字,以上,python中的类用来描述具有相同的属性和方法的对象的集合。它定python用什么编译器
python用什么编译器,代码,平台,工具,环境,培训,灵活,时间,管理,系统,智能,Python的学习过程少不了IDE或者代码编辑器,或者集成的开发编辑器(IDpython需要编译吗
python需要编译吗,代码,平台,做好,培训,体系,语言,机器码,目标,厨师,下次,python是编译型语言还是解释型语言?回答这个问题前,应该先弄清楚什