VC6使用#pragma warning的一点经验

原创 2003年07月08日 09:10:00

1.       VC6.0中定义类CXMLError的头文件中起始处有如下#include语句

#include <comdef.h>

#include <string>

 

class CXMLError 

{

       

在使用Level 4编译时,报告C4100C4511C4512C4663C4245C4018几种Warning

 

2.       修改为如下:

#pragma warning( push )

#pragma warning( disable :  4100 4511 4512 4663 4245 4018)

#include <comdef.h>

#include <string>

#pragma warning( pop )

 

这时产生了大量C4514警告。

 

3.       再修改为

#pragma warning( push )

#pragma warning( disable :  4100 4511 4512 4663 4245 4018 4514)

#include <comdef.h>

#include <string>

#pragma warning( pop )

 

结果依然如上,有大量C4514警告,少量466342454108

 

4.       再修改如下:

#pragma warning( disable :  4100 4511 4512 4663 4245 4018 4514)

#pragma warning( push )

#include <comdef.h>

#include <string>

#pragma warning( pop )

结果只余下4663, 4245, 4108

 

由于不能去除4663, 4245, 4108三种警告

 

5.       又对包含头文件修改为在Level 3编译,如下:

#pragma warning( disable:4514)

#pragma warning( push,3 )

#include <comdef.h>

#include <string>

#pragma warning( pop)

 

结果无警告产生。

 

6.       又尝试如下修改:

#include <comdef.h>

#pragma warning( push,3 )

#include <string>

#pragma warning( pop)

 

结果无警告产生。

 

小结:

1.         在防止包含头文件引起的Warning而使用#pragma warning时,应只针对产生警告的头文件进行处理,在这个问题中是<string>,这时应该在#include <string>上面加#pragma warning(push),否则可能增加其它警告,如此处产生的大量C4514

2.         在使用#pragma warning(push)后使用#pragma warning(disable: xxxx)可能无效时,可以尝试交换两个语句的顺序,这可能是VC6.0中的#pragma warningBug

3. VC6.0中存在一些不能diable掉的Warning,如4663, 4245, 4108等。这可能是VC6.0Bug,如已知的C4786VC6.0中不能disable掉,使用#pragma warning(disable : 4786)之后仍然会显示警告。

关于#pragma warning 用法的研究

关于#pragma warning 用法的研究 在使用标准C++进行编程的时候经常会得到很多的警告信息,而这些警告信息都是不必要的提示, 所以我们可以使用#pragma warning(disable...
  • gggg_ggg
  • gggg_ggg
  • 2014年12月18日 15:20
  • 2445

#pragma阻止编译器警告

在xcode6中,如果使用类似以下代码传入nil,会被xcode提示错误 [dataImage setData:nil]; 编译器提示:Null passed to a callee tha...
  • u010795305
  • u010795305
  • 2015年12月17日 10:03
  • 1761

msvc/gcc:中用#pragma指令关闭特定警告(warning)

在使用一些第三方库或源码的时候,经常会遇到编译时产生warnings情况,这些warning不是我们自己的代码产生的,当然也不好去修改,但每次编译都显示一大堆与自己代码无关的警告也着实看着不爽,而且还...
  • 10km
  • 10km
  • 2016年06月21日 14:03
  • 3102

#pragma 的用法

在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的...
  • ithzhang
  • ithzhang
  • 2013年02月13日 10:57
  • 2257

常用去除警告的方法

1  常用去警告:            #pragma warning(disable:4035) //no return value          #pragma warning(dis...
  • xiaoyafang123
  • xiaoyafang123
  • 2016年08月09日 11:34
  • 1018

#pragma指令的使用

前言  #pragma指令为我们提供了让编译器执行某些特殊操作提供了一种方法。这条指令对非常大的程序或需要使用特定编译器的特殊功能的程序非常有用。 #pragma指令的一般形式为:#pragma pa...
  • so_geili
  • so_geili
  • 2016年11月03日 23:38
  • 583

pragma pack字节对齐详解

强调一点: #pragma pack(4) typedef struct {     char buf[3];     word a; }kk; #pragma pack() 对齐的原则是min(si...
  • yangyangye
  • yangyangye
  • 2014年12月24日 17:36
  • 1534

重要的#pragma声明

最近在做CCP标定的底层的相关工作,涉及到对多组变量指定内存区块的应用。转载了这篇文章来学习#pragma的使用。   原文出处:龙丘推荐必读基础知识: 重要的#pragma声明 http://www...
  • wzj983
  • wzj983
  • 2017年04月29日 17:11
  • 512

Pragma的几种常用用法

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

iOS中#pragma的使用

在开发过程中我们可以在方法前面加上下面代码来提供类似方法注释功能,该功能在提供注释的同时也方便在代码区上方的导航条中快速定位自己的方法#pragma mark - Message然后在代码过程中如果有...
  • willluckysmile
  • willluckysmile
  • 2016年12月11日 11:03
  • 674
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC6使用#pragma warning的一点经验
举报原因:
原因补充:

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