关于 Visual Studio 的警告系列 warning C4996:: ‘scanf‘

Visual Studio 警告系列::C4996

目录

  • 问题溯源

  • 编译器提示

  • 代码警告

  • 解决方案

    • 方式一:使用 vs 编译器的推荐写法
    • 方式二:添加文件内编译预处理
    • 方式三:添加项目编译预处理
  • 附加更新内容(关于建立了检查生命周期安全的文件)

  • 结语

问题溯源

由于vs编译器对安全性的考虑,对 scanf 等一些列函数增加了安全性检验 的使用进行的设定。不仅是 scanf 函数,还包含 字符串操作函数、文件处理操作函数等。

编译器提示:

warning 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”的声明

警告代码:

int main()
{
	int a;
	scanf("%d",&a);			// 警告提示处
	printf("%d\n", a);
}

解决方案:

方式一:使用 vs 编译器的推荐写法

vs 中建议使用 scanf_s() 函数 代替 scanf() 函数,两个函数功能完全一致,就相当于使用 define 取别名。

操作如下:
int main()
{
	int a;
	scanf_s("%d",&a);		// 使用 scanf_s() 函数 代替 scanf() 函数
	printf("%d\n", a);
}

方式二:添加文件内编译预处理

第一种添加方式:

第一行 写预编译指令:(总之放在所用语句之前)
#define _CRT_SECURE_NO_WARNINGS 1
此后就可以正常使用 scanf() 函数了。

关于 Visual Studio 的警告系列 warning C4996:: ‘scanf‘_第1张图片

第二种添加方式(不推荐):

第二种方式就是运用取别名的方式来解决问题,但是不推荐
#define scanf_s scanf

方式三:添加项目编译预处理

操作流程:

(菜单栏)项目 => 属性 => 配置属性 => C/C++ => 预处理器 => 预处理器定义:加入 _CRT_SECURE_NO_WARNINGS
设置完成后先点击应用,再点击确定

操作演示:
  1. (菜单栏)项目 => 属性关于 Visual Studio 的警告系列 warning C4996:: ‘scanf‘_第2张图片

  2. 配置属性 => C/C++ => 预处理器 => 预处理器定义关于 Visual Studio 的警告系列 warning C4996:: ‘scanf‘_第3张图片注意:在点击下拉框的三角符号后,选择编辑

  3. 预处理器定义:加入 _CRT_SECURE_NO_WARNINGS,并确定及应用。关于 Visual Studio 的警告系列 warning C4996:: ‘scanf‘_第4张图片

附加更新内容(关于建立里检查生命周期安全的文件)

前文内容主要是针对在学习过程,大家使用vs编译器都在仅使用空项目,即下面图片中箭头所指的选项。

关于 Visual Studio 的警告系列 warning C4996:: ‘scanf‘_第5张图片

接下来更新一下,如果在勾选了上图中第四个选项,即选择使用安全开发生命周期检查的项目该如何调试。

解决方案

方式一:使用 vs 编译器的推荐写法(同前文:方式一)

方式二:添加文件内编译预处理(与前文略有差异)

由于建立了生命周期检查项目,此时编译器会自动创建多文档文件,我们的头文件将会在 头文件 -> stdafx.h 中统一引入头文件,故此时我们的文件内添加与编译指令因在 stdafx.h 头文件中添加,且在所有预处理指令前添加,如下图。

关于 Visual Studio 的警告系列 warning C4996:: ‘scanf‘_第6张图片

方式三:添加项目编译预处理

方式一:与前文的方式三操作相同
方式二:取消生命周期检查操作

(菜单栏)项目 => 属性 => 配置属性 => C/C++ => 常规 => SDL检查:选择否
设置完成后先点击应用,再点击确定

操作如下图:
关于 Visual Studio 的警告系列 warning C4996:: ‘scanf‘_第7张图片

结语

如有错误,欢迎指正!

你可能感兴趣的:(编译器警告,C语言基础,c++,c语言,visual,studio,code,编辑器)