










SetBlockHeadSize( &a1, GetBlockHeadSize(&a1)+GetBlockHeadSize(&a2) )执行时,
首先执行表达式*(&a1)&= 0x3,就改变了a1的值,所以后面GetBlockHeadSize(&a1)计算的值不是预期的了。
改正:先计算int newSize = GetBlockHeadSize(&a1)+GetBlockHeadSize(&a2)的值
或者改成:#define SetBlockHeadSize(pInfo, dwords) ( *(pInfo) = *(pInfo) &0x3 |( (dwords)<<2) )
或者定义成函数,
void setBlockHeadSize( UINT* pInfo, UINT dwords )
{
(*(pInfo) &= 0x3 ) |= ( (dwords)<<2);
}