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

发表于 使用教程 分类,标签:

在vs高版本中,一直有个SDL检测,举个例子:

#include<stdio.h>
int main()
{
	int x, y;
	scanf("%d", &x);
	y = x;
	printf("y=%d\n",y);
	return 0;
}

这个程序在VC6.0或者2010运行是可以的,但是在vs高版本会出错,错误如下:

360截图20190826161246163.jpg

 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.

这就是vs高版本的安全开发生命周期(SDL)检查,这里在错误中也给出了解决方法

第一种解决方法:

Consider using scanf_s instead.

大致意思就是把scanf改成scanf_s

正确代码

#include<stdio.h>
int main()
{
	int x, y;
	scanf_s("%d", &x);
	y = x;
	printf("y=%d\n",y);
	return 0;
}

第二种解决方法:

use _CRT_SECURE_NO_WARNINGS.

忽略警告,将下面一行在写首行

#define _CRT_SECURE_NO_WARNINGS

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int x, y;
	scanf("%d", &x);
	y = x;
	printf("y=%d\n",y);
	return 0;
}

第三种解决方法

选择菜单栏的“项目”->“属性”->“C/C++”->“常规”->“SDL检测”->“否(/sdl-)”,最后确定。

360截图20190826163721444.jpg


image.png

关闭SDL检测,下方错误列表中的 error C4996:会变成warning C4996:,不过不影响运行。


以上就是关于vs高版本遇到安全开发生命周期(SDL)检查的办法,我这里只举例了一个scanf,还有其它的。遇到的话,按照上面三种方法都能解决,实在不行就百度吧,百度上面有很多解决办法。

0 篇评论

发表我的评论