有没有办法为所有项目设置默认设置,删除使用 scanf() 等函数时出现的预编译器安全警告。我发现您可以通过在项目选项中添加一行或#define _CRT_SECURE_NO_WARNINGS
在代码开头添加一个来实现。
我发现自己反复创建新项目来解决编程竞赛,添加以下内容真的很烦人(并且需要宝贵的时间):
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
在代码的开头,或者每次启动一个新项目时在预编译器选项中设置它。
有没有办法为所有项目设置默认设置,删除使用 scanf() 等函数时出现的预编译器安全警告。我发现您可以通过在项目选项中添加一行或#define _CRT_SECURE_NO_WARNINGS
在代码开头添加一个来实现。
我发现自己反复创建新项目来解决编程竞赛,添加以下内容真的很烦人(并且需要宝贵的时间):
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
在代码的开头,或者每次启动一个新项目时在预编译器选项中设置它。
在解决方案资源管理器中标记所有需要的项目。
按 Alt-F7 或右键单击解决方案资源管理器并选择“属性”
配置:所有配置
单击预处理器定义行以调用其编辑器
选择编辑...
将“_CRT_SECURE_NO_WARNINGS”复制到顶部的预处理器定义白框中。
这可能是因为我还是 VS 的新手,而且对 C 来说绝对是新手,但唯一能让我构建的东西是添加
#pragma warning(disable:4996)
在我的文件顶部,这抑制了我在使用 sprintf 时遇到的 C4996 错误
有点烦人,但非常适合我的一小段代码,而且是迄今为止最简单的。
我在这里读到它:https ://msdn.microsoft.com/en-us/library/2c8f766e.aspx
不是自动的,没有。您可以按照BlueWandered的建议创建项目模板,或创建可用于当前和所有未来项目的自定义属性表。
_CRT_SECURE_NO_WARNINGS
.现在,每当您创建一个新项目时,请像这样添加此属性表...
这样做的好处是,您不仅可以在一个地方管理常用设置,而且可以随时更改设置,它们会传播到使用它的所有项目。如果您想在项目中使用很多设置(例如 Boost)_CRT_SECURE_NO_WARNINGS
或库(例如 Boost),这将非常方便。
这里的所有解决方案都无法在我的 VS2013 上运行,但是我#define _CRT_SECURE_NO_WARNINGS
在 stdafx.h 之前将其放入,#pragma once
并且所有警告都被抑制了。注意:我仅出于原型设计目的而编写代码以支持我的研究,因此请确保您在编写代码时了解此方法的含义。
希望这可以帮助
只需复制“ _CRT_SECURE_NO_WARNINGS ”将其粘贴到项目->属性->c/c++->预处理器->预处理器定义 单击确定。它会工作
VS 2017 我的两分钱:
我可以确认它在 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
(我为 MSDN 网络调用添加了另一个定义。)当然我更喜欢 a)。
我可以确认:#define _CRT_SECURE_NO_WARNINGS(没有值)不起作用。
PS真正的重点是将这些定义放在函数声明之前,即在 *.h 之前
如果您的项目不使用 stdafx.h,则可以将以下行作为 .cpp 文件中的第一行,编译器警告应该会消失——至少在 Visual Studio C++ 2008 中对我来说是这样。
#ifdef _CRT_SECURE_NO_WARNINGS
#undef _CRT_SECURE_NO_WARNINGS
#endif
#define _CRT_SECURE_NO_WARNINGS 1
在它们之前有注释和空行是可以的。