禁用通过_CRT_SECURE_NO_DEPRECATE
生成的警告的最好方法是什么,以便轻松地恢复它们,并在Visual Studio版本之间工作?
发布于 2008-09-23 08:06:16
如果你不想污染你的源代码(毕竟这个警告只在微软编译器中出现),通过“项目”“->”属性“->”“Configuration properties"->"C/C++"->"Preprocessor"->"Preprocessor definitions”将_CRT_SECURE_NO_WARNINGS
符号添加到你的项目设置中。
此外,您还可以在包含生成此警告的头文件之前定义它。您应该添加如下所示的内容
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
还有一句话,确保你理解了这个警告的含义,也许,如果你不打算使用MSVC之外的其他编译器,可以考虑使用更安全的函数版本,即strcpy_s而不是strcpy。
发布于 2008-09-23 15:01:02
您可以使用以下命令在出现警告的位置临时禁用警告
#pragma warning(push)
#pragma warning(disable: warning-code) //4996 for _CRT_SECURE_NO_WARNINGS equivalent
// deprecated code here
#pragma warning(pop)
因此,您不会禁用所有警告,这有时可能是有害的。
发布于 2008-09-23 10:58:18
我在一个多平台的项目上工作,所以我不能使用_s函数,我不想用visual studio特定的代码污染我的代码。
我的解决方案是禁用visual studio项目上的警告4996。转到项目高级属性高级配置属性-> C/C++ -> Disable specific warning添加值4996。
如果还使用在之前定义mfc和/或atl库(不是我的情况),请包括mfc _AFX_SECURE_NO_DEPRECATE和之前的包括atl _ATL_SECURE_NO_DEPRECATE。
我在visual studio 2003和2005中使用此解决方案。
附注:如果您只使用visual studio,那么安全模板重载可能是一个很好的解决方案。
https://stackoverflow.com/questions/119578
复制相似问题