C++ 默认情况下,在Visual Studio中从项目中删除安全警告(_CRT_secure_NO_warnings)
是否有一种方法可以在默认情况下为所有项目设置,以删除使用scanf()等函数时出现的预编译器安全警告。我发现您可以通过在项目选项中添加一行或在代码开头添加一个C++ 默认情况下,在Visual Studio中从项目中删除安全警告(_CRT_secure_NO_warnings),c++,visual-studio,precompiler,C++,Visual Studio,Precompiler,是否有一种方法可以在默认情况下为所有项目设置,以删除使用scanf()等函数时出现的预编译器安全警告。我发现您可以通过在项目选项中添加一行或在代码开头添加一个#define(定义)CRT(安全)NO(无)警告来实现 我发现自己不断地为解决编程竞赛而创建新项目,添加以下内容真的很烦人(而且需要宝贵的时间): 在代码开头,或在每次启动新项目时在预编译器选项中进行设置。不自动,否。您可以根据建议创建项目模板,或创建可用于当前和所有未来项目的自定义属性表 打开属性管理器(视图->属性管理器) 在“属性管
#define(定义)CRT(安全)NO(无)警告
来实现
我发现自己不断地为解决编程竞赛而创建新项目,添加以下内容真的很烦人(而且需要宝贵的时间):
在代码开头,或在每次启动新项目时在预编译器选项中进行设置。不自动,否。您可以根据建议创建项目模板,或创建可用于当前和所有未来项目的自定义属性表
\u CRT\u SECURE\u NO\u警告
这里的好处是,您不仅可以在一个地方管理公共设置,而且可以在任何时候更改设置,这些设置会传播到使用它的所有项目。如果您想在项目中使用大量设置(如
\u CRT\u SECURE\u NO\u WARNINGS
或库(如Boost)),这将非常方便。在解决方案资源管理器中标记所有所需的项目
按Alt-F7或在解决方案资源管理器中单击鼠标右键,然后选择“属性”
配置:所有配置
点击
预处理器定义行调用其编辑器
选择
编辑
将“\u CRT\u SECURE\u NO\u WARNINGS”复制到顶部的预处理器定义白框中
这里的所有解决方案在我的VS2013上都失败了,但是我在stdafx.h中将
\define\u CRT\u SECURE\u NO\u警告放在\pragma一次之前,所有警告都被抑制了。注意:我只为原型设计目的编写代码,以支持我的研究,因此请确保您在编写代码时理解此方法的含义
希望这能有所帮助,这可能是因为我对VS还是个新手,对C绝对是个新手,但唯一允许我构建的是添加
#pragma warning(disable:4996)
在我的文件顶部,这抑制了我在sprintf中遇到的C4996错误
有点烦人,但对于我的一点点代码来说是完美的,而且是最简单的
我在这里读到:我的两分钱VS 2017:
我可以确认它在stdafx.h中适用于以下两种样式:
(a)
(b)
(我为MSDN网络调用添加了另一个定义…)
当然,我确实更喜欢一个)
我可以证实:
#定义\u CRT\u安全\u无\u警告
(无值)不起作用
实际的点是在函数声明之前把这些定义放在前面,即**.H/P>> P >如果你的项目不使用STDAFX.H,你可以把下面的行放在.CPP文件中的第一行,编译器警告应该消失——至少它在Visual Studio C++ 2008中对我来说是这样。
#ifdef _CRT_SECURE_NO_WARNINGS
#undef _CRT_SECURE_NO_WARNINGS
#endif
#define _CRT_SECURE_NO_WARNINGS 1
前面有注释和空行是可以的。只需复制“\u CRT\u SECURE\u NO\u警告””
将其粘贴到项目->属性->c/c++->预处理器->预处理器定义上
单击“确定”。它将起作用您可以导出定义了“CRT\U安全\U无\U警告”的项目模板。这似乎是一个很好的解决方法。我正在调查。谢谢您忘记了末尾的1 35;定义#CRT(安全)(无)警告1@MartijnvanWezel结尾处的1不是必需的。@qqqq它将强制为true这描述了如何为一个我认为OP已经知道的项目添加它(尽管它不是100%清楚)。关键问题是如何添加它,以便它出现在所有项目中。理想情况下,如何将其添加到%(PreprocessOrdDefinitions)宏中以使其包含在所有位置?2015年1月13日已修复。这仅描述了第一步。一旦您按照需要的方式配置了所有内容,您还需要导出项目模板(有关说明,请参阅)。我没有“预处理器定义”选项卡。我能做什么?@Jorje12将此添加到顶部:#定义(define)CRT(u SECURE)(u NO)警告太棒了。我不敢相信直到今天我才发现了物业经理。stdafx.h
在哪里?对于那些不知道的人,应该将其定义为1,如下所示:#定义#CRT#安全#无警告1我尝试了本页上显示的#定义的每种变体(末尾有1和没有1),只有#pragma对我有效。(VS2013社区版)我确信我遗漏了一些东西,但在某个时候,你只需要它来工作,这样你就可以继续下去。有着完全相同的东西——感觉很糟糕,但最终,它在@Spike0xffI可以确认它在VC++2015中不起作用,但在上面的版本中起作用。谢谢@ShitalShah您的确认是基于个人实验还是一些Microsoft官方文档?@bri:无条件设置默认值可能会产生不必要的影响。你真的想把行为恢复到以前的样子。要做到这一点,请改用Visual Studio 2010中的.Works。
#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1
#pragma once
#ifdef _CRT_SECURE_NO_WARNINGS
#undef _CRT_SECURE_NO_WARNINGS
#endif
#define _CRT_SECURE_NO_WARNINGS 1