使用VS2005以及后续版本编译strcpy、sprintf等函数时,会出现如下C4996警告。
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.
5> c:\program files (x86)\microsoft visual studio 10.0\vc\include\string.h(105) : 参见“strcpy”的声明
warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
5> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(371) : 参见“sprintf”的声明
对于此类警告,正规的做法是移植时使用诸如strcpy_s、sprintf_s函数替代strcpy、sprintf函数,消除警告。
然而,对于某些特殊的代码使用strcpy_s函数替代可能会有困难。或许,我们想暂时排除编译器的骚扰(眼不见为净嘛^.^),开展更为急迫的工作。因此,下面的方法可能会有用武之地。
方法一
代码中添加#pragma warning预处理指令,修改编译器对C4996警告消息的行为 。
关闭全部C4996警告。
#pragma warning(disable:4996) //关闭全部
只显示一次警告。
#pragma warning(once:4996) //只显示一次警告
方法二
打开工程配置属性页后,点击配置属性>C/C++>预处理器,增加预处理定义_CRT_SECURE_NO_WARNINGS。