#define _CRT_SECURE_NO_WARNINGS 1问题

本文介绍了当使用scanf、strcpy等函数时遇到的安全警告,这是由于VS编译器认为这些函数可能存在栈溢出风险。解决方法是在代码中添加#define _CRT_SECURE_NO_WARNINGS 1,以消除警告。此外,还提供了下载notepad++的链接,用于修改VS项目文件。
摘要由CSDN通过智能技术生成

文章目录

  • 前言
  • 一、为什么用了scanf、strcyp、strlen、strcat等函数会报错?
  • 二、操作步骤
    • 1.下载notepad++
    • 2.修改
  • 总结


前言

当我们的代码出现这样的报错时,不要慌张。应该是你用了scanf、strcyp、strlen、strcat.

'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、strcyp、strlen、strcat等函数会报错?

函数调用的时候需要建立栈帧,函数返回的时候会清除栈帧,在栈帧中会为函数局部变量(如数组)开辟空间。如果scanf 输入一个字符串超过了局部数组的大小,可能造成栈帧的破坏,函数无法正常返回,从而出现bug。这仅从程序员的细心是很难控制的,当程序变大的时候就会出现意想不到的麻烦。简单来说编译器认为这些函数不安全,必须提供一个数字以表明最多读取多少位字符,使用scanf_s等后面加个_s就不会报错。

scanf是C语言提供的,而scanf_s是VS编译器提供的,若使用scanf_s,则代码可移植性和跨平台性会变得较差,不建议使用。其实还有更方便的方法,就是声明这些VS认为不安全的函数是安全的就行了。

二、操作步骤

1.下载notepad++

链接:https://pan.baidu.com/s/1GtRJJjbXs44I9c54pmplHQ
提取码:zk4r

2.修改

在VS安装目录中找到newc++file.cpp,使用notepad++打开,然后输入#define _CRT_SECURE_NO_WARNINGS 1  并且保存即可。下次打开VS 第一行会自动有这一句代码。

 


总结

这个报错并不重要,写入声明即可解决。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优雅人字拖

老板大气

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值