#pragma warning(disable:4996)是啥?
Posted 流楚丶格念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#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
-
#pragma warning只对当前文件有效(对于.h,对包含它的cpp也是有效的),而不是对整个工程的所有文件有效。当该文件编译结束,设置也就失去作用。
-
#pragma warning(push) 存储当前报警设置。
-
#pragma warning(push, n) 存储当前报警设置,并设置报警级别为n。n为从1到4的自然数。
-
#pragma warning(pop) 恢复之前压入堆栈的报警设置。在一对push和pop之间作的任何报警相关设置都将失效。
-
#pragma warning(disable: n)将某个警报置为失效
-
#pragma warning(default: n)将报警置为默认
-
某些警告如C4309是从上到下生效的。即文件内#pragma warning从上到下遍历,依次生效。
#pragma warning其他用法
开发人员可以使用 #pragma
指令将警告作为错误处理;还可以启用或禁用警告,如下面的示例所示:
1.将一个warning作为一个错误
#pragma warning (error: 6260)
2.将一个warning禁用掉
#pragma warning (disable: 6011)
3.将一个被禁用的warning启用
#pragma warning (enable: 6011)
以上是关于#pragma warning(disable:4996)是啥?的主要内容,如果未能解决你的问题,请参考以下文章
#pragma warning(disable:4996)是啥?