在Visual Studio中默认从项目中删除安全警告(_CRT_SECURE_NO_WARNINGS)
有没有办法为所有项目默认设置,以消除使用scanf()等函数时出现的预编译器安全警告。 我发现你可以通过在项目选项中添加一行或者在代码开头添加一个#define _CRT_SECURE_NO_WARNINGS
来实现。
我发现自己反复创build新的项目来解决编程竞赛,这真的很烦人(并花费宝贵的时间)来添加:
#ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif
在代码的开始部分,或者每当我开始一个新的项目时在预编译器选项中设置它。
在解决scheme资源pipe理器中标记所需的项目
按Alt-F7或在解决scheme资源pipe理器中右键单击并select“属性”
configuration:所有configuration
点击预处理器定义行来调用它的编辑器
select编辑…
将“_CRT_SECURE_NO_WARNINGS”复制到顶部的“预处理器定义”白色框中。
这可能是因为我对VS还是个新手,对于C来说绝对是新手,但唯一允许我创build的东西就是增加了
#pragma warning(disable:4996)
在我的文件顶部,这抑制了我用sprintf得到的C4996错误
有点烦人,但对我的一小部分代码是完美的,并且是最简单的。
我在这里阅读: https : //msdn.microsoft.com/en-us/library/2c8f766e.aspx
不自动,不。 您可以按照build议的BlueWandered创build项目模板,也可以创build自定义属性表,您可以将其用于当前和未来的所有项目。
- 打开物业经理(查看 – >物业经理)
- 在物业经理右键单击您的项目,然后select“添加新项目属性表”
- 给它一个名字,并在一个共同的目录中创build它。 属性表将被添加到所有构build目标。
- 右键单击新的属性表,然后select“属性”。 这将打开属性,并允许您更改设置,就像在编辑项目时一样。
- 进入“通用属性 – > C / C ++ – >预处理器”
- 编辑设置“预处理器定义”并添加
_CRT_SECURE_NO_WARNINGS
。 - 保存,你就完成了。
现在任何时候你创build一个新的项目,像这样添加此属性表…
- 打开物业经理(查看 – >物业经理)
- 在物业经理右键单击您的项目,并select“添加现有的项目属性表”
这样做的好处是,您不仅可以获得一个地方来pipe理常用设置,而且可以随时更改传播到所有使用它的项目的设置。 如果你有很多像_CRT_SECURE_NO_WARNINGS
这样的设置,或者你想在你的项目中使用的类似Boost的库,这是很方便的。
这里的所有解决scheme都无法在我的VS2013上工作,但是我把#define _CRT_SECURE_NO_WARNINGS
放在#pragma once
之前的stdafx.h中#pragma once
并且所有的警告都被抑制了。 注:我只编写原型来支持我的研究,所以请确保您在编写代码时了解此方法的含义。
希望这可以帮助
我2017年VS两美分:
我可以确认它在stdafx.h工作在这些样式:
一个)
#pragma once #define _CRT_SECURE_NO_WARNINGS 1 #define _WINSOCK_DEPRECATED_NO_WARNINGS 1
b)
#define _CRT_SECURE_NO_WARNINGS 1 #define _WINSOCK_DEPRECATED_NO_WARNINGS 1 #pragma once
(我已经添加了MSDNnetworking调用的另一个定义..)当然,我更喜欢a)。
我可以确认:#define _CRT_SECURE_NO_WARNINGS(没有值)不起作用。
PS的真正意义在于把这些定义在函数声明之前,即在* .h之前