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

下载地址

Visual Studio地址: https://visualstudio.microsoft.com/zh-hans/

在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高版本会出错,错误如下:

VS 安全开发生命周期(SDL)检查插图
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-)】,最后确定。

VS 安全开发生命周期(SDL)检查插图2
VS 安全开发生命周期(SDL)检查插图4

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

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

暂无评论

发送评论 编辑评论


				
上一篇
下一篇