error C4996: 'scanf': This function or variable may be unsafe的解决方法 |
您所在的位置:网站首页 › cpt109 › error C4996: 'scanf': This function or variable may be unsafe的解决方法 |
error C4996: 'scanf': This function or variable may be unsafe的解决方法
1、问题描述
2、解决方案
2.1、使用#define _CRT_SECURE_NO_WARNINGS宏定义
2.2、使用#pragma warning(disable:4996)
2.3、通过修改vs工程属性的预处理器定义进行解决
总结
1、问题描述
在vs2013工程的使用中,当我们使用scanf、fopen等函数时,经常会遇到vs软件安全性检测引起的报错。如下,以使用scanf为例,显示的错误信息如下: error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.如上报错信息,告知我们scanf这个函数可能是不安全的,并建议我们使用scanf_s去替代它。此外,也给了我们提示可以使用_CRT_SECURE_NO_WARNINGS去屏蔽这个报错信息 那么如果我们真的懒得将scanf、fopen等函数换成其对应的安全性函数scanf_s、fopen_s的话,可以使用以下介绍的三种解决方案: 2、解决方案 2.1、使用#define _CRT_SECURE_NO_WARNINGS宏定义在报错的文件最前面加上#define _CRT_SECURE_NO_WARNINGS这个宏定义。注意要加在#include前面,如下: 2.2、使用#pragma warning(disable:4996)在报错的文件中加上如下的预处理指令(加在报错的函数前的任意位置都行,但建议将其加在#include后面): #pragma warning(disable:4996)其作用就是屏蔽 4996号(这个错误编号在报错信息里是有说明的)的警告信息,使工程正常编译。如下: 2.3、通过修改vs工程属性的预处理器定义进行解决上述的两个方法都是针对单一文件中进行修改的;其安全性检测关闭的作用范围也是只对当前文件有效。若要对整个工程文件的安全性检测进行关闭;可以通过如下步骤进行: (1)、Project Properties -> Configuration Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions 若您的vs是汉化版本,对应的操作如下:右键当前工程名 -> 属性 -> 配置属性 -> C/C++ ->预处理器 -> 预处理定义 (2)、点击上图中预处理定义后面的下三角箭头 -> 编辑 -> 在最下面输入如下指令并进行保存。 _CRT_SECURE_NO_WARNINGS 总结当我们在vs中使用scanf、fopen等函数时,经常会遇到vs软件安全性检测引起的报错。此时若不想将报错函数更换成其指定的安全性函数。可以通过如下三种方式解决: 在文件开头加上#define _CRT_SECURE_NO_WARNINGS这个宏定义 在文件开头加上#pragma warning(disable:4996)这个预处理指令 通过修改vs工程属性的预处理器定义进行解决其中,前面两点是比较方便的,但注意其安全性检测关闭的作用范围只是对当前文件有效;最后一种则是针对整个工程文件进行的修改。所以,如果我们想完全不做安全检查,就使用最后这种方法;如果只是想针对某些文件不做安全性检查,则可以在这些文件中使用前面两种方法。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |