#pragma warning 的用法

原创 2007年10月15日 13:12:00
关于#pragma warning
1.       #pragma warning只对当前文件有效(对于.h,对包含它的cpp也是有效的),而不是对整个工程的所有文件有效。当该文件编译结束,设置也就失去作用。
2.       #pragma warning(push)
存储当前报警设置。
#pragma warning(push, n)
存储当前报警设置,并设置报警级别为n。n为从1到4的自然数。
3.       #pragma warning(pop)
恢复之前压入堆栈的报警设置。在一对push和pop之间作的任何报警相关设置都将失效。
4.       #pragma warning(disable: n)
将某个警报置为失效
5.       #pragma warning(default: n)
将报警置为默认
6.       某些警告如C4309是从上到下生效的。即文件内#pragma warning从上到下遍历,依次生效。
例如:
void func()
{
      #pragma warning(disable: 4189)
      char s;
      s = 128;
      #pragma warning(default: 4189)
      char c;
      c = 128;
}
则s = 128不会产生C4309报警,而C4309会产生报警。
7.       某些警告例如C4189是以函数中最后出现的#pragma warning设置为准的,其余针对该报警的设置都是无效的。
例如:
void func()
{
      #pragma warning(disable: 4189)
      int x = 1;
      #pragma warning(default: 4189)
}
则C4189仍然会出现,因为default指令是函数的最后一条。在该文件内的其他函数中,如果没有重新设置,C4189也是以#pragma warning(default: 4189)为准。如果重新设置,同样是按照其函数中的最后一个#pragma warning为准。
8.       某些警告(MSDN认为是大于等于C4700的警告)是在函数结束后才能生效。
例如:
#pragma warning(disable:4700)
void Func()
{
int x;
int y = x;  
          #pragma warning(default:4700)  
           int z= x;
}
则y = x和z = x都不会产生C4700报警。只有在函数结束后的后的另外一个函数中,#pragma warning(default:4700)才能生效。
 

程序关闭时在#pragma warning(suppress: 4985)处中断

程序在关闭以及某些运行的时候,在#pragma warning(suppress: 4985)里面中断了,一直没有找到问题的所在,在注销掉所有刚写的代码后,还是没有解决。 思考原因:可能是刚刚替换了...
  • wa_hhh
  • wa_hhh
  • 2017-06-06 20:32:21
  • 637

#pragma warning

每次编译从网上下载的开源代码,我都会对着 Error List 窗口里密密麻麻的黄色 Warning 信息发呆。可能我有那么点 "洁癖",因为有很多警告信息实在没有必要弄出来干扰我们的视线。   利...
  • fan158
  • fan158
  • 2009-11-24 14:35:00
  • 815

深入浅出话VC++(2)——MFC的本质

一、引言 上一专题中,纯手动地完成了一个Windows应用程序,然而,在实际开发中,我们大多数都是使用已有的类库来开发Windows应用程序。MFC(Microsoft Foundation C...
  • lizhi3186575
  • lizhi3186575
  • 2014-01-03 18:55:51
  • 1640

VC深入浅出学习笔记(一)

第三课 剖析MFC对window窗口程序的封装,   创建一个单文档TEST 程序,生成5个类。 CMainFrame ,CTESTAPP,CTESTDOC,CTESTVIEW.CAboutD...
  • xshalk
  • xshalk
  • 2011-12-05 15:54:18
  • 1187

#pragma warning(n)支持

以下是D3D从VS2003移植到VS2005时遇到的安全警告: warning C4996: 'wcscpy' was declared deprecated see declaration ...
  • vLinker
  • vLinker
  • 2014-05-24 14:38:25
  • 319

Pragma的几种常用用法

Pragma的几种常用用法 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数。 (1)message 参数。 Message 它能够在编译信息输出窗口中...
  • nodeman
  • nodeman
  • 2015-01-05 13:52:30
  • 732

#pragma用法详解 && #pragma once 与 #ifndef

#pragma用法详解 目录: (0)   前言 (1) #pragma message能够在编译信息输出窗口中输出相应的信息 (2) #pragma code_seg能够设置程序中函数代码存放的代...
  • you1314520me
  • you1314520me
  • 2013-12-23 19:15:43
  • 1413

#pragma warning 启用和禁用warning

开发人员可以使用 #pragma 指令将警告作为错误处理;还可以启用或禁用警告,如下面的示例所示: 1.将一个warning作为一个错误 #pragma warning (error: 6...
  • Cashey1991
  • Cashey1991
  • 2011-12-05 16:38:35
  • 12295

#pragma 的几种用法

预编译指令#pragma有很多种用法,我敢保证很多程序员即使是一辈子也不会碰到其中的有些用法,是的,他们的确很偏僻,我们也没有用他们的需求。所以,本文不会面面俱到,只是把几种常用的几种汇总了一下。1....
  • hziee_
  • hziee_
  • 2007-09-15 17:47:00
  • 4134

#pragma once的使用

#pragma once的使用 摘自vivi'smile的博客     pragma指令简介 在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是...
  • ghost5216
  • ghost5216
  • 2011-12-19 13:55:26
  • 4409
收藏助手
不良信息举报
您举报文章:#pragma warning 的用法
举报原因:
原因补充:

(最多只允许输入30个字)