C++ 默认情况下,在Visual Studio中从项目中删除安全警告(_CRT_secure_NO_warnings)

C++ 默认情况下,在Visual Studio中从项目中删除安全警告(_CRT_secure_NO_warnings),c++,visual-studio,precompiler,C++,Visual Studio,Precompiler,是否有一种方法可以在默认情况下为所有项目设置,以删除使用scanf()等函数时出现的预编译器安全警告。我发现您可以通过在项目选项中添加一行或在代码开头添加一个#define(定义)CRT(安全)NO(无)警告来实现 我发现自己不断地为解决编程竞赛而创建新项目,添加以下内容真的很烦人(而且需要宝贵的时间): 在代码开头,或在每次启动新项目时在预编译器选项中进行设置。不自动,否。您可以根据建议创建项目模板,或创建可用于当前和所有未来项目的自定义属性表 打开属性管理器(视图->属性管理器) 在“属性管

是否有一种方法可以在默认情况下为所有项目设置,以删除使用scanf()等函数时出现的预编译器安全警告。我发现您可以通过在项目选项中添加一行或在代码开头添加一个
#define(定义)CRT(安全)NO(无)警告
来实现

我发现自己不断地为解决编程竞赛而创建新项目,添加以下内容真的很烦人(而且需要宝贵的时间):


在代码开头,或在每次启动新项目时在预编译器选项中进行设置。

不自动,否。您可以根据建议创建项目模板,或创建可用于当前和所有未来项目的自定义属性表

  • 打开属性管理器(视图->属性管理器)
  • 在“属性管理器”中,右键单击项目并选择“添加新项目属性表”
  • 给它一个名称并在公共目录中创建它。属性表将添加到所有生成目标
  • 右键单击新属性页并选择“属性”。这将打开属性并允许您更改设置,就像为项目编辑设置一样
  • 进入“公共属性->C/C++->预处理器”
  • 编辑设置“预处理器定义”并添加
    \u CRT\u SECURE\u NO\u警告
  • 保存,你就完成了
  • 现在,无论何时创建一个新项目,都可以像这样添加此属性页

  • 打开属性管理器(视图->属性管理器)
  • 在“属性管理器”中,右键单击项目并选择“添加现有项目属性表”

  • 这里的好处是,您不仅可以在一个地方管理公共设置,而且可以在任何时候更改设置,这些设置会传播到使用它的所有项目。如果您想在项目中使用大量设置(如
    \u CRT\u SECURE\u NO\u WARNINGS
    或库(如Boost)),这将非常方便。

    在解决方案资源管理器中标记所有所需的项目

    按Alt-F7或在解决方案资源管理器中单击鼠标右键,然后选择“属性”

    配置:所有配置

    点击 预处理器定义行调用其编辑器

    选择 编辑

    将“\u CRT\u SECURE\u NO\u WARNINGS”复制到顶部的预处理器定义白框中


    这里的所有解决方案在我的VS2013上都失败了,但是我在stdafx.h中将
    \define\u CRT\u SECURE\u NO\u警告放在
    \pragma一次之前,所有警告都被抑制了。注意:我只为原型设计目的编写代码,以支持我的研究,因此请确保您在编写代码时理解此方法的含义


    希望这能有所帮助,这可能是因为我对VS还是个新手,对C绝对是个新手,但唯一允许我构建的是添加

    #pragma warning(disable:4996)
    
    在我的文件顶部,这抑制了我在sprintf中遇到的C4996错误

    有点烦人,但对于我的一点点代码来说是完美的,而且是最简单的


    我在这里读到:

    我的两分钱VS 2017:

    我可以确认它在stdafx.h中适用于以下两种样式:

    (a)

    (b)

    (我为MSDN网络调用添加了另一个定义…) 当然,我确实更喜欢一个)

    我可以证实: #定义\u CRT\u安全\u无\u警告 (无值)不起作用


    实际的点是在函数声明之前把这些定义放在前面,即**.H/P>> P >如果你的项目不使用STDAFX.H,你可以把下面的行放在.CPP文件中的第一行,编译器警告应该消失——至少它在Visual Studio C++ 2008中对我来说是这样。

    #ifdef _CRT_SECURE_NO_WARNINGS
    #undef _CRT_SECURE_NO_WARNINGS
    #endif
    #define _CRT_SECURE_NO_WARNINGS 1
    
    前面有注释和空行是可以的。

    只需复制“\u CRT\u SECURE\u NO\u警告”” 将其粘贴到项目->属性->c/c++->预处理器->预处理器定义上
    单击“确定”。它将起作用

    您可以导出定义了“CRT\U安全\U无\U警告”的项目模板。这似乎是一个很好的解决方法。我正在调查。谢谢您忘记了末尾的1 35;定义#CRT(安全)(无)警告1@MartijnvanWezel结尾处的1不是必需的。@qqqq它将强制为true这描述了如何为一个我认为OP已经知道的项目添加它(尽管它不是100%清楚)。关键问题是如何添加它,以便它出现在所有项目中。理想情况下,如何将其添加到%(PreprocessOrdDefinitions)宏中以使其包含在所有位置?2015年1月13日已修复。这仅描述了第一步。一旦您按照需要的方式配置了所有内容,您还需要导出项目模板(有关说明,请参阅)。我没有“预处理器定义”选项卡。我能做什么?@Jorje12将此添加到顶部:#定义(define)CRT(u SECURE)(u NO)警告太棒了。我不敢相信直到今天我才发现了物业经理。
    stdafx.h
    在哪里?对于那些不知道的人,应该将其定义为1,如下所示:#定义#CRT#安全#无警告1我尝试了本页上显示的#定义的每种变体(末尾有1和没有1),只有#pragma对我有效。(VS2013社区版)我确信我遗漏了一些东西,但在某个时候,你只需要它来工作,这样你就可以继续下去。有着完全相同的东西——感觉很糟糕,但最终,它在@Spike0xffI可以确认它在VC++2015中不起作用,但在上面的版本中起作用。谢谢@ShitalShah您的确认是基于个人实验还是一些Microsoft官方文档?@bri:无条件设置默认值可能会产生不必要的影响。你真的想把行为恢复到以前的样子。要做到这一点,请改用Visual Studio 2010中的.Works。
    #pragma once
    #define _CRT_SECURE_NO_WARNINGS 1 
    #define _WINSOCK_DEPRECATED_NO_WARNINGS 1 
    
    #define _CRT_SECURE_NO_WARNINGS 1 
    #define _WINSOCK_DEPRECATED_NO_WARNINGS 1 
    #pragma once
    
    #ifdef _CRT_SECURE_NO_WARNINGS
    #undef _CRT_SECURE_NO_WARNINGS
    #endif
    #define _CRT_SECURE_NO_WARNINGS 1