《VS如何解决warning C4996: 'vsprintf': This function or variable may be unsafe.问题》

版权声明:本文为博主原创文章,未经博主允许不得转载,博客地址:http://blog.csdn.net/mars_xiaolei。 https://blog.csdn.net/mars_xiaolei/article/details/86133102

问题描述 

使用VS2010在生成解决方案的时候,输出窗口会出现一大堆warning C4996: 'xxx': This function or variable may be unsafe.这样的警告信息。参考了另外一位博主的说法:这是微软的警告,主要是因为那些C库的函数,很多函数内部是不进行参数检测的(包括越界类的),微软担心使用这些会造成内存异常,所以就改写了同样功能的函数,改写了的函数进行了参数的检测,使用这些新的函数会更安全和便捷。关于这些改写的函数你不用专门去记忆,因为编译器对于每个函数在给出警告时,都会告诉你相应的安全函数,查看警告信息就可以获知,在使用时也再查看一下MSDN详细了解,常见的警告信息如下。

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

意思是:

警告C4996: 'vsprintf':此函数或变量可能不安全。考虑使用vsprintf_s代替。
要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS。有关详细信息,请参见在线帮助。

解决方法 

1、根据上面的警告信息进行修改,在函数名后面加上_s作为后缀,例如将vsprintf替换为vsprintf_s,通常情况下这样修改就可以解决问题了,如果问题没有解决,还是报了警告信息,有可能就是修改函数名的同时也把函数参数给修改了,就得使用另外一种方法了。

2、如果前面还有警告,就使用_CRT_SECURE_NO_WARNINGS一次性解决吧,这个命令是不弹警告,具体添加方法如下,选中项目名称,点击鼠标右键选择属性,进入项目属性页,依次选择配置属性C/C++预处理器预处理器定义,然后在最后面添加_CRT_SECURE_NO_WARNINGS

猜你喜欢

转载自blog.csdn.net/mars_xiaolei/article/details/86133102