__w64 检测64位可移植性问题

 

__w64是种标识,用来帮助Coder发现32位程序移植到64位程序的问题。上文说,有三种类型的数值,int、long、pointer,这三类数值在32位系统里是32bit,在64位系统里是64bit。将32位程序移植到64位程序跟上面这些东西有什么关联呢?看下面的例子。

有一个变量 i0 ,不论在32位系统下,还是64位系统下,都是32bit,另一个变量 i1,在32位系统下是32bit,在64位系统下是64bit。

那么,当在32位系统下写程序时,i0 = i1 不会有问题,都是32bit;但是在同样的代码移植到64位下时,实际发生的是64bit数值赋给32bit数值,有可能丢失精度。

为了提醒Coder注意这种错误,通过/Wp64 开关来打开__w64功能,就能在32位系统中引起警告。

__w64貌似已经被VC抛弃,亲测过,目前V9仍可用。最后,这个东西,不怎么有用……但是ATL中用到了。理解这个东西有助于理解ATL代码。The end.

posted on 2016-04-05 10:30  &大飞  阅读(606)  评论(0编辑  收藏  举报

导航