读书人

哪位高手来详细解释下这段代码

发布时间: 2012-02-12 17:16:33 作者: rapoo

谁来详细解释下这段代码?
// align ptr to nearest DWORD
WORD* AlignDWORD(WORD* ptr)
{
ptr++; // round up to nearest DWORD
LPARAM lp = (LPARAM)ptr; // convert to long
lp &= 0xFFFFFFFC; // make sure on DWORD boundary
return (WORD*)lp;
}

[解决办法]
先把ptr转换成long型,然后1111 1111 1111 1111 1111 1111 1111 1101相与,返回相与后的结果
[解决办法]
0xFFFFFFFC = 1111...1100
保证指针指向的地址值最后两位为0,最后两位为零就保证了地址值是按照+4的方式跳变的
这就能理解了吧

100 = 4
1000 = 8
1100 = 12
...

读书人网 >VC/MFC

热点推荐