VS中报错C4996 怎么办?

这篇具有很好参考价值的文章主要介绍了VS中报错C4996 怎么办?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有遇到过这种错误吗?VS中报错C4996

其实这就是一些警告,但是如果你用了很多第三方的开源代码,你很难保证这些开源代码中使用的函数以及编码规范都遵循了VS最新的要求,所以很可能就会报错,注意时报错不是警告,怎么办?

看官方解决方法:

在 Visual Studio 开发环境中设置此编译器选项

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。

  2. 选择“配置属性”>“C/C++”>“常规”属性页 。

  3. 使用属性下拉列表控件设置“SDL 检查”属性。 选择“确定”或“应用”以保存更改。

总之,就是个坑爹的,VS自作多情地默认设置成开启了,其实应该关闭的。

再看看官方完整解释:

启用建议的安全开发生命周期 (SDL) 检查。 这些检查将安全相关警告更改为错误并设置附加安全代码生成功能。

语法

/sdl[-]

注解

/sdl 启用 /GS 提供的基线安全检查的超集并重写 /GS-。 默认情况下,/sdl 处于关闭状态。 /sdl- 禁用附加安全检查。

编译时检查

/sdl 启用以下被视为错误的警告:

/sdl 启用的警告 等效的命令行开关 说明
C4146 /we4146 将一元减号运算符应用于无符号类型,并生成了无符号的结果。
C4308 /we4308 将负整型常数转换为无符号类型,并生成了可能无意义的结果。
C4532 /we4532 在 __finally/finally 块中使用 continuebreak 或 goto 关键字已在异常终止期间取消定义了行为。
C4533 /we4533 初始化变量的代码不会执行。
C4700 /we4700 使用未初始化的局部变量。
C4703 /we4703 使用可能未初始化的局部指针变量。
C4789 /we4789 使用特定 C 运行时 (CRT) 函数时缓冲区溢出。
C4995 /we4995 使用标记有 pragma deprecated 的函数。
C4996 /we4996 使用标记有 deprecated 的函数。

运行时检查

启用 /sdl 后,编译器将生成在运行时执行这些检查的代码:

  • 启用 /GS 运行时缓冲区溢出检测的严格模式,等同于使用 #pragma strict_gs_check(push, on) 进行编译。

  • 执行有限的指针清理。 在不涉及取消引用的表达式中以及没有用户定义的析构函数的类型中,在调用 delete 后,指针引用将设置为无效的地址。 此清理有助于防止重复使用已过时的指针引用。

  • 初始化类成员指针。 在对象实例化时自动将指针类型的类成员初始化为 nullptr(在构造函数运行前)。 它有助于防止使用构造函数未显式初始化的未初始化指针。 在以下情况下,将调用编译器生成的成员指针初始化:

    • 对象不是使用自定义(用户定义)的 operator new 分配的

    • 对象不是作为数组(例如 new A[x])的一部分分配的

    • 类不是托管或导入的

    • 类具有用户定义的默认构造函数。

    若要由编译器生成的类初始化函数初始化,成员必须是指针,而不是属性或常量。

有关详细信息,请参阅警告、/sdl 和改进未初始化的变量检测。

在 Visual Studio 开发环境中设置此编译器选项

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。

  2. 选择“配置属性”>“C/C++”>“常规”属性页 。

  3. 使用属性下拉列表控件设置“SDL 检查”属性。 选择“确定”或“应用”以保存更改。

另请参阅

MSVC 编译器选项
MSVC 编译器命令行语法文章来源地址https://www.toymoban.com/news/detail-725559.html

到了这里,关于VS中报错C4996 怎么办?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Visual Studio编辑器中C4996 ‘scanf‘: This function or variable may be unsafe.问题解决方案

    目录 ​编辑 题目:简单的a+b 1.  题目描述 2.  输入格式 3.  输出格式 4.  样例输入 5.  样例输出 6.  解题思路 7.  代码示例 8.  报错解决 方案一 方案二 方案三 方案四 总结 输入两个整数a和b,计算a+b的和 本题很简单,但是注意此题是多组测试数据,即需要不停的接收系统

    2024年02月03日
    浏览(57)
  • scanf函数不安全: C4996 ‘scanf‘: This function or variable may be unsafe. Consider using scanf_s instead

    代码报错: scanf函数易受缓冲区溢出攻击的影响,可能导致安全问题。 scanf_s函数是一种更安全的选择,它将缓冲区的大小作为参数并避免了缓冲区溢出攻击 举个栗子: 字符数组的大小为 5 , 若输入的字符串字符数目不超过 5 ,那么没问题, ( 注意字符串后面默认会多出来一个 ‘

    2024年02月03日
    浏览(45)
  • 蓝屏怎么办电脑蓝屏怎么办?蓝屏问题详细分析

    蓝屏怎么办电脑蓝屏怎么办?最近很多小伙伴在咨询这个问题,其实电脑蓝屏了进不去,我们可以重新启动电脑,如果进入系统后还是直接蓝屏,那么你可以尝试一下,关机重启,然后在进入系统的时候,狂按f8,下面我们详细的说说。   一.电脑蓝屏进不去系统 在电脑蓝屏

    2024年02月05日
    浏览(68)
  • Github官网进不去怎么办?Github无法访问怎么办?

    打开hosts文件,可能需要管理员权限。 win10 hosts位置:C:WindowsSystem32driversetc 在末尾新建一行,添加如下内容: 访问 http://tool.chinaz.com/dns/ ,在输入框中填写 github.com,然后点击检测按钮,会列出响应ip,如图: 选最小TTL值的IP 在hosts文件结尾输入: 执行 ipconfig /flushdns 刷新

    2024年02月10日
    浏览(56)
  • 手机照片误删怎么办,电脑照片误删怎么办怎么才能找回,EasyRecovery来帮您

    手机照片误删怎么办,电脑照片误删怎么办怎么才能找回,EasyRecovery 2023来帮您!!! EasyRecovery 2023是一款操作安全、价格便宜、用户自主操作的 数据恢复 方案,它支持从各种各样的 存储介质 恢复删除 或者丢失的文件,其支持的媒体介质包括: 硬盘驱动器 、光驱、闪存、

    2024年02月12日
    浏览(64)
  • 计算机中丢失msvcr120.dll怎么办,电脑找不到msvcr120.dll怎么办

    电脑提示msvcr120.dll丢失是一个常见的问题,这个问题通常会在你尝试打开某些程序或游戏时出现。这个问题的原因是因为你的电脑缺少了一个名为msvcr120.dll的文件,这个文件是微软Visual C++ Redistrle for Visualv 2013的一部分。如果你遇到了这个问题,不要担心,下面是三种解决方法

    2024年02月13日
    浏览(62)
  • 鼠标滚轮失灵怎么办?

    鼠标是非常重要的一个外设,我们经常需要使用鼠标的滚轮来上下滚动浏览网页中的内容,非常方便。但是最近有用户发现自己的鼠标上下滚轮出现问题,操作不灵敏,这该怎么办? 针对windows电脑 1、 同时按住Win+R键,打开运行,输入regedit,回车进入注册表编辑器; 2、 展

    2024年02月11日
    浏览(47)
  • 电脑突然死机怎么办?

    死机是电脑常见的故障问题,尤其是对于老式电脑来说,一言不合电脑画面就静止了,最后只能强制关机重启。那么你一定想知道是什么原因造成的吧,一般散热不良最容易让电脑死机,还有系统故障,比如不小心误删了系统运作的必要文件。那么面对电脑突然死机我们用什

    2024年04月10日
    浏览(61)
  • 怎么测试网络延迟,网络延迟过大怎么办?

    在各式各样的数据在网络介质中通过网络协议(如TCP/IP)进行传输,如果信息量过大不加以限制,超额的网络流量就会导致设备反映缓慢,造成网络延迟。 定义:在传输介质中传输所用的时间,即从报文开始进入网络到它开始离开网络之间的时间。 单位:毫秒(MS) 如何定义网

    2024年02月05日
    浏览(55)
  • win11取消开机密码pin无法删除怎么办 win11关闭开机密码pin选项灰色怎么办

    很多用户设置默认的开机密码pin,但是由于感觉太麻烦了,想要关闭该功能。结果发现选项变成了灰色,无法直接删除。那么win11关闭开机密码pin选项灰色该怎么办呢?今天小编就给大家具体的解决方法,有需要的用户们赶紧来看一下吧。 具体步骤如下: 1.右键开始菜单 。

    2024年02月16日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包