在使用VS2017编译C++工程时,遇到了:错误C4996 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
这里记录一下:
FILE* pFile = fopen(filename, "rb");
改为
FILE* pFile;
if(fopen_s(&pFile, filename, "rb"))
return false;
当然也可以在工程里加入预处理器设置:_CRT_SECURE_NO_WARNINGS
两者比较:
1.fopen_s的安全是在于比函数fopen多了溢出检测;
2.在使用上,函数fopen的返回值是文件指针,如果返回的文件指针为NULL时,则表示打开文件失败。而函数fopen_s的返回值是相应的错误代码,通过查看错误代码代表的含义,有助于排查问题。
3.fopen_s打开的文件不能共享,如果你打开的文件需要共享的话,不能使用fopen_s函数。可以考虑_fopen,_wfsopen这两个函数。
本文解决VS2017编译C++时遇到的C4996错误,详细对比fopen与fopen_s函数,指导如何避免安全警告并提供代码示例。
1405

被折叠的 条评论
为什么被折叠?



