“使用-D_SCL_SECURE_NO_WARNINGS”是啥意思?

Posted

技术标签:

【中文标题】“使用-D_SCL_SECURE_NO_WARNINGS”是啥意思?【英文标题】:What does "use -D_SCL_SECURE_NO_WARNINGS" mean?“使用-D_SCL_SECURE_NO_WARNINGS”是什么意思? 【发布时间】:2014-07-30 20:59:50 【问题描述】:

我在尝试编译曲线压缩程序时出错,错误号 C4996,带参数的函数调用可能不安全。它告诉我使用上述内容。错误来自 xutility 头文件,我以前从未见过它。这是我必须输入控制台的标志吗?网上几乎没有提到它...

【问题讨论】:

这是一个宏定义。 谢谢!奇怪,我真的把它复制并粘贴到谷歌上,没有结果。对不起... “网上几乎没有提到它......” - 你在谷歌上搜索过-D_SCL_SECURE_NO_WARNINGS吗?如果是这样,这就解释了为什么你什么也没找到。您没有指定任何搜索词,您只是指定它们必须包含D_SCL_SECURE_NO_WARNINGS。这就是- 通常对 Google 的意义。删除- 或将整个内容放在引号中,您将获得大量结果。 啊,好吧,有道理... 【参考方案1】:

-D 是一个命令行编译器标志,它使其余文本被视为代码中存在#define。

在解决方案资源管理器中,右键单击项目,选择“属性”。项目属性页面将打开。展开左侧树中的“>C/C++”条目并在其下选择“预处理器”。右窗格中的顶部条目应该是“预处理器定义”。在该编辑框中,添加 _SCL_SECURE_NO_WARNINGS,用 ;

将其与其他条目分开

【讨论】:

【参考方案2】:

如果你想使用,我还想补充一下

#define _SCL_SECURE_NO_WARNINGS

直接在您的代码中,您必须在包含标题之前放置它。或者你可以使用

#pragma warning(disable:4996)

【讨论】:

【参考方案3】:

-D 表示“定义一个宏”,在本例中为_SCL_SECURE_NO_WARNINGS。这意味着在代码的某个地方有一个

#if defined(_SCL_SECURE_NO_WARNINGS)

线。如果您想从 VS 内部执行此操作,请转到项目的属性页面,在一个选项卡下应该有一个添加新定义的位置。应该已经列出了一些(例如DEBUG)。在此处添加_SCL_SECURE_NO_WARNINGS

【讨论】:

【参考方案4】:

-D 是编译器标志或宏,就像您在源代码中定义的那样。

-D_SCL_SECURE_NO_WARNINGS 定义了 _SCL_SECURE_NO_WARNINGS 宏。

有关 _SCL_SECURE_NO_WARNINGS 宏的更多详细信息,请查看以下链接。 https://devblogs.microsoft.com/cppblog/why-am-i-getting-these-_scl_secure_no_warnings-messages/

【讨论】:

以上是关于“使用-D_SCL_SECURE_NO_WARNINGS”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章