warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use __jxtgddlt的博客-程序员秘密

技术标签: c  编译器  file  function  编程  C++笔记  微软  

使用VS2005以上版本(VS2005、VS2008、VS2010)编译在其他编译器下正常通过的C语言程序,你可能会遇到类似如下的警告提示:
 引用内容
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.
1>          c:/program files/microsoft visual studio 10.0/vc/include/string.h(105) : 参见“strcpy”的声明
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.
1>          c:/program files/microsoft visual studio 10.0/vc/include/stdio.h(234) : 参见“fopen”的声明
原因解释
这种微软的警告,主要因为那些C库的函数,很多函数内部是不进行参数检测的(包括越界类的),微软担心使用这些会造成内存异常,所以就改写了同样功能的函数,改写了的函数进行了参数的检测,使用这些新的函数会更安全和便捷。关于这些改写的函数你不用专门去记忆,因为编译器对于每个函数在给出警告时,都会告诉你相应的安全函数,查看警告信息就可以获知,在使用时也再查看一下MSDN详细了解。库函数改写例子:
mkdir改写为 _mkdir
fopen”改写为 fopen_s
stricmp改写为 stricmp_s
strcpy改写为strcpy_s
    解决方案:
1> 根据下面的warning提示:参见“fopen”的声明
        消息:“This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”
        所以可以将函数按warning提示的第二句,改为使用fopen_s函数即可:
        例如:FILE *pFile=fopen("1.txt", "w");
           改为:
           FILE* pFile;
           fopen_s(&pFile, "1.txt", "w");
2> 还是根据warning提示的地三句话:use _CRT_SECURE_NO_DEPRECATE
        项目|属性|配置属性|C/C++|命令行|附加选项,加入【/D "_CRT_SECURE_NO_DEPRECATE" 】(注:加入中括号中完整的内容)
3> 降低警告级别:项目|属性|配置属性|C/C++|常规,自己根据情况降低警告级别(此法不推荐)
    注意:高度重视警告:使用编译器的最高警告级别。应该要求构建是干净利落的(没有警告)。理解所有警告。通过 修改代码而不是降低警告级别来排除警告。
    编译器是你的朋友。如果它对某个构造发出警告,这经常是说明你的代码中存在潜在的问题。成功的构建应该是无声无息的(没有警告的)。【《C++编程规 范》】

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jxtgddlt/article/details/6451807

智能推荐

Dijkstra的matlab实现_伤椿悲湫梦的博客-程序员秘密

%% functionname: function description % display setting:% grid type | grid color | identifier% -----------------------------------% free space | white | 1% obstacle | black | 2% origin | green | 3% destination| yellow | 4

win10电脑蓝牙设备搜不到如何解决_系统天地的博客-程序员秘密

在win10系统中,通常自带有蓝牙设备,然而有些用户可能会遇到连接蓝牙设备的时候发现搜索不到,这是怎么回事呢,经过分析可能是由于电脑中系统问题或者是蓝牙驱动存在问题引起,下面随小编一起来看看具体的解决步骤。1、按Windows键+ X打开超级菜单,点击【设备管理器】;2、打开设备管理器,在蓝牙部分,右键单击蓝牙驱动程序软件,选择“禁用设备”,单击“是”完成禁用操...

程序员要实现财富自由,“出海”这条路该怎么走?_CSDN资讯的博客-程序员秘密

作者 | 闫辉 责编 |屠敏出品 | CSDN(ID:CSDNnews)当我们羡慕 28 岁实现财富自由并决定离职退休的字节跳动程序员郭宇,敬佩 37 岁的雷军在财务自由后下场创办小米,并在 51 岁泪洒发布会,哽咽宣布以造车为目标进行人生最后一次重大创业时,我们发现,以技术创新为开端,程序员创富这条路,蕴藏了多种方式方法。为此,CSDN 重磅推出了《开谈:程序员创富系列》视频对话栏...

如何在MAC环境下(Xcode)使用svn,以及新手在团队使用svn注意事项_mac xcode14.3 svn_Never-say-Never的博客-程序员秘密

1、Xcode4中苹果有自带的SVN软件------>Organizer------>Repositories2、SVN checkout到本地后,删除本地file,对服务器有影响吗? 不会影响服务器,当你执行“svn update”时会zai再次被自动下载;当删除后再执行“svn commit”就会在服务器上也对应删除。 3、连接服务器

互联网最值得加入的 173 家国企汇总!!_程序猿DD_的博客-程序员秘密

来源:www.zhihu.com/question/285730093/answer/2506491786最近招人,拿的简历一沓一沓。今年的就业形势,实在是严峻 。社招都这样,更别说应届生。除过常见的互联网,以及今年热门的新能源。其实如果大家不想卷,家庭条件也还可以,我建议可以考虑一波国企。虽然有一些垃圾国企,但仍然有非常多值得考虑的国企,毕竟优质的国企很稳定,不会像互联网一样担忧年纪大被裁员的情...

vue中http://localhost:8080/#/index去掉#_Lin_熊米的博客-程序员秘密

vue中http://localhost:8080/#/index去掉#只需要在 router / index.js 中,添加mode:'history'即可。如图所示:详解:vue中localhost:8080地址栏的显示有两种模式:第一种是hash(默认),即mode:'hash',该模式地址栏会默认有#号。第二种是history,即mode:'history',该模式直接用url。...

随便推点

买基金必看_〆 奋斗吧、小青年°998的博客-程序员秘密

1.基金收益率由哪些因素决定(1)红利:是基金因购买公司股票而享有对该公司净利润分配的所得。一般而言,公司对股东的红利分配有现金红利和股票红利两种形式。基金作为长线投资者,其主要目标在于为投资者获取长期、稳定的回报,红利是构成基金收益的一个重要部分。所投资股票的红利的多少,是基金管理人选择投资组合的一个重要标准。(2)股息:是指基金因购买公司的优先股权而享有对该公司净利润分配的所得。股息通常是按一定的比例事先规定的,这是股息与红利的主要区别。与红利相同,股息也构成投资者回报的一个重要部分,股息高低也是基金管

带有插图的验证CAP定理_aka这里是你的程序员的博客-程序员秘密

前言本篇文章不仅仅是一篇译文,也是学习 CAP 定理,所以文章不仅仅只是翻译开始CAP 定理是分布式系统中的基本定理,任何声明是分布式的系统最多可以有两个下列中的属性(该定理在 2000 年由计算机科学家 Eric Brewer 提出,由Gibert和Lynch证明)一致性 / Consistency可用性 / Availability分区容错性 / Partition toler...

Spring核心——Resources_求知者_______的博客-程序员秘密

2. Resources2.1. Introduction标准Java.net.URL类与各种URL前缀的标准处理程序不足以满足所有对低级资源的访问。eg:获取没有标准化的URL,需要注册一个新的处理程序去处理专门的URL前缀(比如http:),比较复杂。缺少一些理想的功能。eg:检查所指向资源的存在性的方法。所以,为了可以访问所有的低级资源,Spring推出了Resource接口。...

台湾大学 李宏毅教授的个人主页_森先生的博客-程序员秘密

Mark一下李宏毅教授的个人主页,里面有相关知识点的视频、PPT。个人主页相关知识点PPT和视频机器学习博大精深,还是要继续努力。

[20151112]ORA-01450?3215?.txt_cuixun7780的博客-程序员秘密

[20151112]ORA-01450 maximum key length (3215) exceeded.txt --如果建立的索引键值长度达到一定程度,在做rebuild online时会出现ora-01450错误.今天...