在将我当前的 32 位应用程序移植到 64 位的过程中,我添加了编译器选项 /we4302(请参阅 SO Question Clarification: Porting 32 to 64 bit和Hans Passant的建议答案),我遇到了一个 ATLMFC 的场景包含文件似乎有指针截断。
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\ATLMFC\INCLUDE\afxtempl.h
(163) : error C4302: 'type cast' : truncation from 'CControlBar *' to 'long'
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\ATLMFC\INCLUDE\afxtempl.h
(163) : error C4302: 'type cast' : truncation from 'HMENU ' to 'long'
我计划将编译器标志永久添加到我们的构建系统中,但如果我们在 MFC 包含中遇到问题,那将是一个坏主意。
所以我的问题是
- 报告的问题是错误警告吗?
- 如果这确实导致指针截断,建议的解决方案是什么
- 在构建系统中添加编译器选项 /we4302 是不是一个坏主意?