VC6使用#pragma warning的一点经验
1. 在VC6.0中定义类CXMLError的头文件中起始处有如下#include语句
#include <comdef.h>
#include <string>
class CXMLError
{
…
}
在使用Level 4编译时,报告C4100,C4511,C4512,C4663,C4245,C4018几种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警告,少量4663,4245,4108。
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 warning的Bug。
3. 在VC6.0中存在一些不能diable掉的Warning,如4663, 4245, 4108等。这可能是VC6.0的Bug,如已知的C4786在VC6.0中不能disable掉,使用#pragma warning(disable : 4786)之后仍然会显示警告。
- · 深入DCOM之DCOM的发展史
- · Windows程序效率
- · C++入门解惑(2)——初探指针(上)
- · 读好文章,快速理解COM组件知识,10分钟深刻阅读,获得超过2000元的培训
- · WTL的消息机制
- · DirectShow应用——支持DVD播放
- · 浏览器集成教学 自定义浏览器
- · 计算机科学与技术学生学习基础材料参考
- · 关于std::list的sort函数在VC6下的修正
- · 数据结构学习(C++)——线性链式结构总结(代后记)【2】
- · 深入DCOM之STA
- · 在COM中使用数组参数-数组指针
- · 在COM中使用数组参数-SafeArray
- · 在COM中使用数组参数-ICollection
- · win2000下“打开”对话框实现2000的风格综述
- · WTL体系结构(4)
- · 深入DCOM之MTA
- · 调试Release版本应用程序
- · 简化异常安全代码
- · Nt/2000/xp平台下的存储控制模型(Access Control Model)
- · Direct3D9初级教程
- · What are you, Anyway
- · 泛型编程:再现Min和Max
- · 在IE工具栏上简单定制按钮
- · Nt/2000/xp平台下的存储控制模型(Access Control Model) (二)
- · Multithreading in .NET Applications
- · SNMP用VC++6.0实现的方法
- · 数据结构学习(c++)——二叉树
- · 数据结构学习(C++)——递归【1】
- · 数据结构学习(C++)——递归【2】(1)
- · 数据结构学习(C++)——递归【2】(2)
- · 数据结构学习(C++)——递归【2】(3)
- · 数据结构学习(C++)——递归【2】(4)
- · 关于异常的使用心得
- · 在VC中调用DirectShow全屏播放视频
- · 3D图形渲染通道负载优化的几种方法
- · 数据结构学习(C++)——递归【3】(1)
- · 旧爱如梦 (harrymeng旧书推荐)
