VC6使用#pragma warning的一点经验

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

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)之后仍然会显示警告。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有