error C4996错误分析

news/2025/1/10 21:54:29/

  之前总是毫无规律地出现这个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的说明


http://www.ppmy.cn/news/904613.html

相关文章

error C2041: illegal digit ‘9‘ for base ‘8‘ | error C2059: syntax error: ‘bad suffix on number‘

错误日志 文本 八进制数值超过范围 1>E:\CProject\test12\Source.c(5,10): error C2041: illegal digit ‘8’ for base ‘8’ 十六进制数值超过范围 1>E:\CProject\test12\Source.c(5,10): error C2059: syntax error: ‘bad suffix on number’ 1>E:\CProject\…

操作数据库错误:错误代码: 1241 Operand should contain 1 column(s)

文章目录 错误描述:错误原因:解决方法:注意: 错误描述: 在执行插入语句时出现了下面错误: 错误代码: 1241 Operand should contain 1 column(s)错误代码: 1241 Operand should con…

Vue 3自定义指令:扩展你的应用功能

Vue 3自定义指令:扩展你的应用功能 引言:什么是自定义指令?Vue 3自定义指令的用法自定义指令的生命周期钩子函数指令的参数和修饰符总结 引言: Vue.js是一款现代化的JavaScript框架,广泛用于构建交互性强、响应迅速的…

Redis进阶源码 - 主流程源码

redis底层是C语言编写的一个可执行程序,主方法为server.c 中main方法 主要包括:从初始化 到 EventLoop整个流程源码内容介绍 画的分析图太大了,需要的直接下载看吧.....想提醒大家的是,看源码时一定要带着目标去看,比…

交易接口 TradeX-M.lic

TradeX-M.lic 链接:https://pan.baidu.com/s/1062LwEaADbI2uT4i4OSaNA 提取码:z3vh

sysbase powerdesigner 过期 需要lic文件 解决方法

下一个pdflm15.dll 文件覆盖安装目录中的即可(我的博客提供了此文件,不要积分)

js 读取文件内容

function load(name) {let xhr new XMLHttpRequest(),okStatus document.location.protocol "file:" ? 0 : 200;xhr.open(GET, name, false);xhr.overrideMimeType("text/html;charsetutf-8");//默认为utf-8xhr.send(null);return xhr.status okStatu…

License文件生成原理

License是什么 如果你有一个产品,希望有权限的用户才可以访问,此时发布一个许可证给用户,就能控制权限了。license是一种商业模式,用户通过购买产品软件,获取license就可以使用。 实现方案 license通过认证和鉴权实…