error C4996错误分析

  之前总是毫无规律地出现这个C4996的error,头文件添加#pragma warning(disable:4996)就可以解决,但是好奇为什么别人的程序就可以不加入这么low的一行,今天仔细搞明白吧~
Ps:本博客使用的是win7 vs2015


现象

error C4996: ‘localtime’: This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
  翻译为:错误C4996: ‘localtime’:这个函数或变量可能不安全。考虑使用localtime_s。要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS。详情请参阅在线帮助。

原因分析

  创建项目时,会有一个勾选项,叫做“安全开发生命周期(SDL)检查”,这个东西是微软在VS2012新推出的东西,为了是能更好的监管开发者的代码安全,如果勾选上这一项,那么他将严格按照SDL的规则编译代码,会有一些以前常用的函数无法通过编译,比如在VS2010中的scanf是warning那么在VS2012中就是error了。

今天听到另一种解说,之所以出现error C4996的问题,是因为用的是windows系统,在linux下不会报错。

解决方案

方案1头文件添加#pragma warning(disable:4996)//注意这一句可以添加在程序头文件的任意一行
方案2在程序的首行添加#define _CRT_SECURE_NO_WARNINGS//注意这一句需要放且只能放在程序首行
方案3在项目处右键点击找到属性,点击配置属性,点击C/C++在右侧找到SDL检查点击最右端小箭头,将其改成否。
方案4项目-->项目属性-->C/C++-->预处理器定义,添加:_CRT_NONSTDC_NO_DEPRECATE和_CRT_SECURE_NO_WARNINGS

以上4种方案,亲测全部有效(win7、vs2015)。

参考来源

感谢所有原作者的工作。
https://blog.csdn.net/weixin_44171004/article/details/86675605

https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4996?view=vs-2019
最后这个链接是微软官方对C4996的说明

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值