#define _CRT_SECURE_NO_WARNINGS 1问题

文章目录

  • 前言
  • 一、为什么用了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 第一行会自动有这一句代码。

#define _CRT_SECURE_NO_WARNINGS 1问题_第1张图片

 
  


总结

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

你可能感兴趣的:(c++,c语言)