在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自定义属性表,您可以将其用于当前和未来的所有项目。

  1. 打开物业经理(查看 – >物业经理)
  2. 在物业经理右键单击您的项目,然后select“添加新项目属性表”
  3. 给它一个名字,并在一个共同的目录中创build它。 属性表将被添加到所有构build目标。
  4. 右键单击新的属性表,然后select“属性”。 这将打开属性,并允许您更改设置,就像在编辑项目时一样。
  5. 进入“通用属性 – > C / C ++ – >预处理器”
  6. 编辑设置“预处理器定义”并添加_CRT_SECURE_NO_WARNINGS
  7. 保存,你就完成了。

现在任何时候你创build一个新的项目,像这样添加此属性表…

  1. 打开物业经理(查看 – >物业经理)
  2. 在物业经理右键单击您的项目,并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之前