#pragma warning

Posted htj10

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#pragma warning相关的知识,希望对你有一定的参考价值。

#pragma warning ...    一般放在头文件的最开始位置。

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

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

3. #pragma warning(pop) 恢复之前压入堆栈的报警设置。该句之后的代码,就恢复了warning,即在一对push和pop之间作的任何报警相关设置都将失效。

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

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

#pragma warning(push)是保存当前的编译器警告状态;
#pragma warning(pop)是恢复原先的警告状态。
例如:
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )
这样在编译Some code部分的代码时,4705、4706、4707三个警告将不会出现。

1.将一个warning作为一个错误
#pragma warning (error: 6260)
2.将一个warning禁用掉
#pragma warning (disable: 6011)
3.将一个被禁用的warning启用
#pragma warning (enable: 6011)

常见 #pragma warning(disable:...),可以在预编译头文件 stdafx.h 的开始处写

#pragma warning(disable:4996) // 可以使用 strcpy sprintf 等,而不是必须使用MS提供的安全函数 strcpy_s sprintf_s 等
#pragma warning(disable 4786) // 4786是标识符过长导致的警告
#pragma once //这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,可以代替 #ifndef .. #define.. #endif

 

以上是关于#pragma warning的主要内容,如果未能解决你的问题,请参考以下文章

#pragma使用分析

#pragma pack(push) 和#pragma pack(pop) 以及#pragma pack()

第24课 #pragma 使用分析

#pragma

C之 #pragma(二十二)

#pragma pack(push,1)与#pragma pack的区别(转)