首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >禁用通过_CRT_SECURE_NO_DEPRECATE生成的警告

禁用通过_CRT_SECURE_NO_DEPRECATE生成的警告
EN

Stack Overflow用户
提问于 2008-09-23 07:28:07
回答 10查看 162.3K关注 0票数 76

禁用通过_CRT_SECURE_NO_DEPRECATE生成的警告的最好方法是什么,以便轻松地恢复它们,并在Visual Studio版本之间工作?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-09-23 08:06:16

如果你不想污染你的源代码(毕竟这个警告只在微软编译器中出现),通过“项目”“->”属性“->”“Configuration properties"->"C/C++"->"Preprocessor"->"Preprocessor definitions”将_CRT_SECURE_NO_WARNINGS符号添加到你的项目设置中。

此外,您还可以在包含生成此警告的头文件之前定义它。您应该添加如下所示的内容

代码语言:javascript
复制
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

还有一句话,确保你理解了这个警告的含义,也许,如果你不打算使用MSVC之外的其他编译器,可以考虑使用更安全的函数版本,即strcpy_s而不是strcpy。

票数 105
EN

Stack Overflow用户

发布于 2008-09-23 15:01:02

您可以使用以下命令在出现警告的位置临时禁用警告

代码语言:javascript
复制
#pragma warning(push)
#pragma warning(disable: warning-code) //4996 for _CRT_SECURE_NO_WARNINGS equivalent
// deprecated code here
#pragma warning(pop)

因此,您不会禁用所有警告,这有时可能是有害的。

票数 49
EN

Stack Overflow用户

发布于 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,那么安全模板重载可能是一个很好的解决方案。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/119578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档