error C4996 'scanf': This function or variable may be unsafe. Consider using;C4703: 使用了可能未初始化的本地指针变量

针对c++报这两个错误解决办法如下
1、error C4996 ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
2、error C4703: 使用了可能未初始化的本地指针变量“xxx”

问题描述:
1、严重性 代码 说明 项目 文件 行 禁止显示状态
error C4996 ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use CRT_SECURE_NO_WARNINGS. See online help for details.
提示上说: ‘scanf’:此函数或变量可能不安全。考虑改用scanf
。若要禁用否决,请使用“CRT_SECURE_NO_警告”。有关详细信息,请参阅联机帮助。在这里插入图片描述

解决办法1:

我们可以直接在前面加一个宏定义

#define _CRT_SECURE_NO_WARNINGS

或者这样也行
解决办法2:

项目----》 XX属性 ----》C++ —>预处理器 —》在预处理器定义添加“_CRT_SECURE_NO_WARNINGS”
在这里插入图片描述

问题描述:
在用VS2015编译时出现下面的错误
在这里插入图片描述

2、error C4703: 使用了可能未初始化的本地指针变量“l”
问题分析:

在VS2015创建项目时,会有一个勾选项,叫做“安全开发生命周期(SDL)检查”,这个东西是微软在VS2015新推出的东西,为了是能更好的监管开发者的代码安全,如果勾选上这一项,那么他将严格按照SDL的规则编译代码,会有一些以前常用的函数无法通过编译,比如在VS2010中的scanf是warning那么在VS2015中就是error了。
查看MSDN中对SDL的描述,SDL检查会视以下告警为错误:

/sdl 启用警告等效的命令行开关描述
C4146/we4146一元负运算符应用于无符号类型,从而导致无符号结果
C4308/we4308一个负整型常数转换为无符号类型,从而导致一个可能无意义结果
C4532/we4308__finally /finally中的关键词,使用continue, break 或 goto在异常终止块未定义行为
C4533/we4533初始化变量的代码不会执行
C4700/we4700使用未初始化的局部变量
C4703/we4703对一个潜在的未初始化的局部指针变量的使用
C4789/we4789当使用时,请缓冲区溢出特定 C 运行时 (CRT) 函数
C4995/we4995使用函数的标deprecated
C4996/we4996使用函数的标记作为deprecated

也就是在编译的时候,当SDL检查启用时,编译器会严格检测缓冲区的溢出,并且会在delete某个指针时,自动为这个指针定义一个非有效的值,防止在delete以后仍用到这个指针时出错。还有就是会在你定义一个对象时,自动为这个对象赋值零。

从这些功能来看,有些功能还是不错的,不但方便了程序员使用也增强了程序的健壮性,但是对老版本程序的兼容就会出现问题,以前程序中编译通过的内容也许在VS2012中就没有办法通过。

解决方法:

有一个选择打开和关闭SDL检查的位置就是:项目属性->配置属性->C/C+±>所有选项>SDL检查,选测是或者否。

此时我们选择”否”,则上面的那个错误就不会出现了
在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值