VC6使用#pragma warning的一点经验
来源:互联网 发布:淘宝无线店铺链接 编辑:程序博客网 时间:2024/05/19 20:40
#include <comdef.h>
#include <string>
class CMyClass
{
…
}
在使用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)之后仍然会显示警告。
7. pragma_warning基本使用方法: (详见MSDN)
// compile with: /W1
#pragma warning(disable:4700)
void Test() {
int x;
int y = x; // no C4700 here
#pragma warning(default:4700) // C4700 enabled after Test ends
}
int x;
int y = x; // C4700
}
- VC6使用#pragma warning的一点经验
- VC6使用#pragma warning的一点经验
- win7 安装 vc6.0的一点经验
- #pragma warning(disable:n)的使用
- #pragma warning 的用法
- #pragma warning 的用法
- css使用的一点经验
- 一点Socket的使用经验
- C++的一点使用经验
- EVC使用的一点经验
- openMP的一点使用经验
- openMP的一点使用经验
- openMP的一点使用经验
- openMP的一点使用经验
- openMP的一点使用经验
- openMP的一点使用经验
- openMP的一点使用经验
- 使用SonarQube的一点经验
- Reverse engineering
- java编程思想读书笔记340页工厂模式
- 班门弄斧之机械设计理论
- Seam book examples updated to Seam 2.0.0.GA
- 如何删除多余的XP启动项目
- VC6使用#pragma warning的一点经验
- 怎样取消ASP.NET页面的缓存
- bat(batch)入门简介
- birt部署到jboss上
- 真正的解决Ajax的中文乱码问题(ASP环境)
- 07年年度总结报告
- J2EE web applications
- Spring 的优秀工具类盘点
- 如何使oracle在通过防火墙时使用单一端口