Skip to main content
 首页 » 编程设计

visual-c++之fopen 已弃用警告

2024年02月27日22落叶

使用 Visual Studio 2005 C++ 编译器,当我的代码使用 fopen() 和此类调用时,我会收到以下警告:

1>foo.cpp(5) : warning C4996: 'fopen' was declared deprecated 
1>        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.' 

如何防止这种情况发生?

请您参考如下方法:

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

#define _CRT_SECURE_NO_DEPRECATE 
#include <stdio.h> 

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