问题描述
使用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。