是否有一种方法可以为所有项目默认设置,以消除使用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
在代码的开头,或者在每次启动新项目时在预编译器选项中进行设置。
Answers:
在解决方案资源管理器中标记所有所需的项目。
按Alt-F7或在解决方案资源管理器中单击鼠标右键,然后选择“属性”
配置:所有配置
单击“预处理器定义”行以调用其编辑器
选择编辑...
将“ _CRT_SECURE_NO_WARNINGS”复制到顶部的“预处理程序定义”白框中。
可能是因为我还是VS的新手,但绝对是C的新手,但是允许我构建的唯一一件事就是添加
#pragma warning(disable:4996)
在文件的顶部,这抑制了我使用sprintf遇到的C4996错误
有点烦人,但对于我的一小段代码来说却是完美的选择,并且到目前为止是最简单的。
我在这里读到了它:https : //msdn.microsoft.com/en-us/library/2c8f766e.aspx
#pragma warning(push)
/#pragma warning(pop)
代替。
不是自动的,不。你可以创建一个项目模板作为BlueWandered建议或创建一个自定义属性表,您可以使用您当前和将来的所有项目。
_CRT_SECURE_NO_WARNINGS
。现在,无论何时创建新项目,都可以像这样添加此属性表...
这样做的好处是,您不仅可以在一个地方管理通用设置,而且在任何时候更改设置,它们都会传播到使用它的所有项目中。如果您有很多_CRT_SECURE_NO_WARNINGS
要在项目中使用的设置(例如Boost)或库(例如Boost),这将很方便。
此处的所有解决方案都无法在我的VS2013上运行,但是我将#define _CRT_SECURE_NO_WARNINGS
stdafx.h 放在了stdafx.h中,#pragma once
并且在禁止所有警告之前。注意:我仅出于原型目的进行编码以支持我的研究,因此请确保您在编写代码时了解此方法的含义。
希望这可以帮助
stdafx.h
?
我对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)。
我可以确认:#定义_CRT_SECURE_NO_WARNINGS(无值)不NOT WORK。
PS的真正目的是将这些定义放在函数声明之前,即* .h之前
即使您可以将_CRT_SECURE_NO_WARNINGS添加到项目的属性中,最简单的方法是使用stdafx.h进行任何类型的警告和错误禁用,只需确保在以下行(和类似行)之前
#pragma once
同样,只要定义了_CRT_SECURE_NO_WARNINGS,就不需要定义一个值(即“ 1”)。所以它应该看起来像这样:
#define _CRT_SECURE_NO_WARNINGS
#pragma once
#pragma once
由实现定义的,但是遵循Visual Studio中的通用实际标准。如果对您有所帮助,无论您是在编译前还是在编译后定义了预处理器符号,那么您的项目配置都将损坏(这是假设您-过度地将- “ precompiled headers”和“ stdafx.h等同于” ”。