前几天在,在使用VS2005进行开发时,出现很多类似下列的警告:
warning C4312: “类型转换”: 从“UINT”转换到更大的“HMENU” 警告?
此为 编译器警告(等级1)C4312“variable”:从“type”转换到更大的“type”
试图将32位值赋给64位整数。例如,将32位int或32位long转换为64位指针。
解决方案:
1) 在64位机环境下,VC7的long为32位, 指针为64位
2) HINSTANCE 是指针类型
3) 默认时,VC7的项目进行64位兼容性检查
如果你是开发64机环境兼容的程序,请重视这个警告
你可以通过项目的配置属性(C++常规)中去掉64位兼容性检查(/Wp64),这样警告就没了。
当然也可以使用 #pragma waring(disable:4312) 但不赞成使用。
#pragma waring 语句应在无法可想,并且确定可以完全忽略的情况下才用的。