您的位置:首页 > 编程语言 > C语言/C++

VS 2015 C++预处理器 scanf() 使用出错问题

2017-03-20 17:42 651 查看


Visual Studio 2015
编译错误


【error C4996: 'scanf': This function or
variable may be unsafe. 】


warning C4996: 'fopen': This function
or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.


warning C4996: 'strcpy': This function
or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.


warning C4996: 'strcat': This function
or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.的解决方案

在VS 2015 中编译 C 语言项目,如果使用了 scanf() 函数,编译时便会提示如下错误:
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.
warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

在VS 2015 中编译 C 语言项目,如果使用了 fopen()函数,编译时便会提示如下警告:
warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

解释:VS认为c标准函数不安全,进行了一些处理。微软官方有关于这类函数的解释,附上连接https://msdn.microsoft.com/en-us/library/wd3wzwts(VS.80).aspx
下面给出这个问题的解决方案(后面几个同scanf()一样,不再作介绍):

方法
1. 在预编译头文件stdafx.h里(注意:一定要在没有include任何头文件之前)定义下面的宏:

        #define _CRT_SECURE_NO_DEPRECATE//关闭安全检查


    2. 或声明 #param warning(disable:4996)



    3. 更改预处理定义:

        项目->属性->配置属性->C/C++ -> 预处理器 -> 预处理器定义,增加:

             _CRT_SECURE_NO_DEPRECATE



4.真正原因在与vs中的SDL检查。于是可以:右键单击工程文件-->属性(最后一个)-->  c/c++  --->SDL 检查 ---> 否。或者在创建工程时把安全开发周期生命(SDL)检查的选取取消。





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  VS2015