#pragma warning(disable:4996)是啥?

简介: #pragma warning(disable:4996)是啥?

含义:忽略warning4996


在使用VS 的开发者会遇到这样的问题,在使用std命名空间库函数的时候,往往会出现类似于下面的警告:


warning C4996: strcpy was declared deprecated


出现这样的警告,是因为VS 中认为CRT中的一组函数如果使用不当,可能会产生诸如内存泄露、缓冲区溢出、非法访问等安全问题。这些函数如:strcpy、strcat等。


对于这些问题,VS 建议使用这些函数的更高级的安全版本,即在这些函数名后面加了一个_s的函数。这些安全版本函数使用起来更有效,也便于识别,如:strcpy_s,calloc_s等。


当 然,如果执意使用老版本、非安全版本函数,可以使用_CRT_SECURE_NO_DEPRECATE标记来忽略这些警告问题。


在“项目—>属性—>预处理器 —>预处理器定义“中添加_CRT_SECURE_NO_DEPRECATE即可。



或在程序开头添加


#pragma  warning(disable:4996)   // 全部关掉          
#pragma  warning(once:4996)      // 仅显示一个


扩展:#pragma warning


  1. #pragma warning只对当前文件有效(对于.h,对包含它的cpp也是有效的),而不是对整个工程的所有文件有效。当该文件编译结束,设置也就失去作用。


  1. #pragma warning(push) 存储当前报警设置。


  1. #pragma warning(push, n) 存储当前报警设置,并设置报警级别为n。n为从1到4的自然数。


  1. #pragma warning(pop) 恢复之前压入堆栈的报警设置。在一对push和pop之间作的任何报警相关设置都将失效。


  1. #pragma warning(disable: n)将某个警报置为失效


  1. #pragma warning(default: n)将报警置为默认


  1. 某些警告如C4309是从上到下生效的。即文件内#pragma warning从上到下遍历,依次生效。


#pragma warning其他用法


开发人员可以使用 #pragma 指令将警告作为错误处理;还可以启用或禁用警告,如下面的示例所示:


1.将一个warning作为一个错误


#pragma warning (error: 6260)


2.将一个warning禁用掉


#pragma warning (disable: 6011)


3.将一个被禁用的warning启用


#pragma warning (enable: 6011)
相关文章
|
运维 监控 网络协议
什么是运营商级 NAT (CGNAT)?
【4月更文挑战第16天】
6130 10
什么是运营商级 NAT (CGNAT)?
|
自然语言处理 安全 C++
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
9350 4
|
算法 C语言 C++
C++ std::chrono库使用指南 (实现C++ 获取日期,时间戳,计时等功能)(一)
C++ std::chrono库使用指南 (实现C++ 获取日期,时间戳,计时等功能)
4906 1
|
开发工具 git
git push报错:The current branch master has no upstream branch
git push报错:The current branch master has no upstream branch
40109 0
git push报错:The current branch master has no upstream branch
|
编译器 C++
使用Visual Studio 2022 创建lib和dll并使用
本文介绍了如何在Visual Studio 2022中创建静态库(lib)和动态库(dll),并展示了如何使用这些库。文章详细说明了创建新项目、编写代码、生成库文件、配置项目属性以及编写测试代码的步骤,并提供了相应的截图和代码示例。作者还分享了在创建和使用库的过程中遇到的一些问题及其解决方案。
3171 0
使用Visual Studio 2022 创建lib和dll并使用
|
11月前
|
Unix Linux 虚拟化
VMware Workstation 17.6.2 发布下载,现在完全免费无论个人还是商业用途
VMware Workstation 17.6.2 发布下载,现在完全免费无论个人还是商业用途
50072 16
VMware Workstation 17.6.2 发布下载,现在完全免费无论个人还是商业用途
|
存储 关系型数据库 MySQL
MySql进阶使用之视图、索引(详解)
MySql进阶使用之视图、索引(详解)
1779 1
|
IDE 开发工具
一文解决Visual Studio 2022运行时系统找不到指定文件的错误(简单易懂 亲测有用)
一文解决Visual Studio 2022运行时系统找不到指定文件的错误(简单易懂 亲测有用)
5658 0
|
存储 算法 安全
超级好用的C++实用库之sha256算法
超级好用的C++实用库之sha256算法
618 1
|
SQL 资源调度 分布式计算
Apache DolphinScheduler 【安装部署】
Apache DolphinScheduler 【安装部署】