C/C++ error C4996: ‘fopen’: This function or variable may be unsafe

最后更新于:2020-06-21 09:06:07

一.error C4996 简介

error C4996

编译出错信息:

error C4996: 'fopen': This function or variable may be unsafe. 
Consider using fopen_s instead. To disable deprecation, 
use _CRT_SECURE_NO_WARNINGS. See online help for details.  

正常调用fopen函数报错,是因为许多函数、 成员函数,模板函数和 Visual Studio 中的库中的全局变量标记为弃用。 这些函数被弃用,因为它们可能具有不同的首选的名称,可能不安全或具有更加安全的变体,或可能已过时。 许多弃用消息包括不推荐使用的函数或全局变量的建议的替换。

二.error C4996 解决办法

1.采用_s结尾的安全版本

将上面的fopen函数改为fopen_s函数,例如:

/************************************************************************/
/*@文件名      : error_c4996.cpp
/*@日  期      : 2020/06/20 19:37
/*@作  者      : 猿说编程
/*@公众号      : 猿说编程
/*@博客        : www.shuopython.com
/*@描述        : error_c4996 - C/C++教程
/************************************************************************/

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include "windows.h"
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{

    //FILE* fp = fopen("d:/12345633.txt", "r"); //error c4996


    FILE* fp = NULL;
    fopen_s(&fp, "d:/12345633.txt", "r"); // ok版本

    if (fp)
    {
        printf("打开文件成功  \n");
        fclose(fp);
    }
    else
        printf("打开文件失败,失败错误号:%d  \n",GetLastError());

    system("pause");

    return 0;
}


2.去掉 visual studio “安全开发生命周期(SDL)检查”

安全开发生命周期(SDL)检查)

3.#pragma warning( disable : 4996)

/************************************************************************/
/*@文件名      : error_c4996.cpp
/*@日  期      : 2020/06/20 19:37
/*@作  者      : 猿说编程
/*@公众号      : 猿说编程
/*@博客        : www.shuopython.com
/*@描述        : error_c4996 - C/C++教程
/************************************************************************/

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include "windows.h"
using namespace std;

#pragma warning( disable : 4996)

int _tmain(int argc, _TCHAR* argv[])
{

    FILE* fp = fopen("d:/12345633.txt", "r");
    if (fp)
    {
        printf("打开文件成功  \n");
        fclose(fp);
    }
    else
        printf("打开文件失败,失败错误号:%d  \n",GetLastError());

    system("pause");

    return 0;
}


4._CRT_SECURE_NO_WARNINGS

项目 =》属性 =》c/c++ =》预处理器=》点击预处理器定义,编辑,加入_CRT_SECURE_NO_WARNINGS,如下图:

_CRT_SECURE_NO_WARNINGS


猜你喜欢

1. 三目运算符

2. 逗号表达式

3. getchar函数

4. putchar函数

5. unicode和多字节区别




转载请注明: 猿说编程 » C/C++教程 » error C4996: This function or variable may be unsafe



技术交流、商务合作请直接联系博主
扫码或搜索:猿说编程

python/C++教程

猿说编程
微信公众号 扫一扫关注