是否有一种方法可以在默认情况下为所有项目设置删除使用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
在代码的开头,或者每次我启动一个新项目时在预编译器选项中设置它。
当前回答
复制_CRT_SECURE_NO_WARNINGS 粘贴到项目->属性->c/c++->预处理器->预处理器定义 单击OK
会有用的
其他回答
如果你的项目不使用stdafx.h,你可以把下面的行作为你的.cpp文件的第一行,编译器的警告应该会消失——至少在Visual Studio c++ 2008中对我来说是这样的。
#ifdef _CRT_SECURE_NO_WARNINGS
#undef _CRT_SECURE_NO_WARNINGS
#endif
#define _CRT_SECURE_NO_WARNINGS 1
在它们之前有注释和空行是可以的。
VS 2017:
我可以确认它在stdafx.h中工作,这两种风格:
a)
#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
(没有值)不工作。
真正的要点是将这些定义放在函数声明之前,即在*.h之前
这可能是因为我对VS还是新手,对C也是新手,但唯一允许我构建的是添加
#pragma warning(disable:4996)
在我的文件的顶部,这抑制了我用sprintf得到的C4996错误
这有点烦人,但非常适合我的一小段代码,而且是迄今为止最简单的。
我在这里读到:https://msdn.microsoft.com/en-us/library/2c8f766e.aspx
这里所有的解决方案都不能在我的VS2013上工作,然而,我把#define _CRT_SECURE_NO_WARNINGS放在stdafx.h中,就在#pragma之前,所有的警告都被抑制了。
注意:我只是为了支持我的研究而编写原型代码,所以请确保在编写代码时理解这种方法的含义。
在解决方案资源管理器中标记所需的所有项目。
按Alt-F7或在解决方案资源管理器中右键单击,选择“属性” 配置:所有配置 单击Preprocessor Definitions行以调用其编辑器 选择编辑 将_CRT_SECURE_NO_WARNINGS复制到顶部的预处理器定义白框中