IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【我的C语言学习进阶之旅】解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe. -> 正文阅读

[C++知识库]【我的C语言学习进阶之旅】解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.

一、问题描述

今天在Visual Studio 2019中写一段C语言的代码,发生生成错误。弹框如下:

在这里插入图片描述
点击【否(N)】,提示如下:

在这里插入图片描述
错误具体信息为:

错误	C4996	'fscanf': This function or variable may be unsafe. 
Consider using fscanf_s instead. 
To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 
See online help for details.	

二、解决问题

2.1 使用fscanf_s函数替代fscanf函数

如上面的错误提示,

错误	C4996	'fscanf': This function or variable may be unsafe. 
Consider using fscanf_s instead. 

我们可以使用fscanf_s函数替代fscanf函数。 没啥好说的,按照提示来,一个一个改。

但是这个解法也有局限,因为:scanf函数是C语言提供的,而scanf_s不是标准C语言提供的,而是VS编译器提供的,只有VS这个编译器能识别出来,当我们换个编译器时(譬如:GCC),那么GCC就不认识scanf_s这个东西了,此时,代码就不满足跨平台性(可移植性)

2.2 在代码顶部加入一行:#define _CRT_SECURE_NO_WARNINGS

在这里插入图片描述
这样在代码顶部加入一行:#define _CRT_SECURE_NO_WARNINGS之后就可以成功编译运行!

2.3 在代码顶部加入一行: #pragma warning(disable:4996)

在代码顶部加入一行: #pragma warning(disable:4996),其中4996对应的错误代码 C4996,如下所示:
在这里插入图片描述
这样加入之后,也是可以成功编译运行!

2.4 在预处理定义中加入宏定义_CRT_SECURE_NO_WARNINGS

如同2.2的方法,我们可以不在文件中添加,直接在预处理定义中加入宏定义_CRT_SECURE_NO_WARNINGS

  1. 选择【解决方案资源管理器】····>【项目属性】
    在这里插入图片描述
  2. 然后选择【配置属性】–>【C/C++】–> 预处理器
    在这里插入图片描述
  3. 编辑【预处理器定义】
    选择【预处理器定义】最右边的下拉框(下拉箭头),然后选择编辑
    在这里插入图片描述
  4. 加入宏定义 _CRT_SECURE_NO_WARNINGS

在这里插入图片描述
加入宏定义 _CRT_SECURE_NO_WARNINGS
在这里插入图片描述
5. 点击【确定】
6. 重新编译运行

把2.2 和 2.3 的方法注释掉,也可以成功编译运行!
在这里插入图片描述

2.5 禁用特定警告

这个方法对应的 2.3 在代码顶部加入一行: #pragma warning(disable:4996)

打开【项目属性】→【C/C++】→【高级】→【禁用特定警告】

然后填上这个错误对应的C4996编号就好了,这个项目就都不会再显示这个错误了。
在这里插入图片描述

这样也是可以正常编译运行的!

2.6 关闭 SDL checks

真正原因在与vs中的SDL检查。
于是可以:右键单击工程文件–>属性(最后一个)--------> c/c++ ------>SDL checks ------------> no.

  1. 选择【解决方案资源管理器】····>【项目属性】
    在这里插入图片描述
  2. 然后选择【配置属性】–>【C/C++】–> 常规

在这里插入图片描述
3. 选择【SDL检查】,关闭它

选择【否】,然后保存。
在这里插入图片描述
4. 恢复2.4 加入预处理器定义,如下所示:
在这里插入图片描述
这样,我们即使没有2.4的方法 也是可以正常编译运行!

三、总结一下

方法多种多样,

  1. 使用fscanf_s函数替代fscanf函数
  2. 在代码顶部加入一行:#define _CRT_SECURE_NO_WARNINGS
  3. 在代码顶部加入一行: #pragma warning(disable:4996)
  4. 在预处理定义中加入宏定义_CRT_SECURE_NO_WARNINGS
  5. 禁用特定警告
  6. 关闭 SDL checks

推荐使用方法4,这样可以一劳永逸。

其他 方法2和方法4对应,方法3和方法5对应。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:16:20  更:2021-09-23 11:16:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:12:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码