处女贴,试贴。
常见的结构体对齐操作,例如,把n以4对齐,可以这样做:
x = n + (4 - 1)
if(x 大于4的倍数)
减去超过的值;
|
所以减的值可能是从0,1,2,3。这样做太麻烦,可以使用位运算&~来解决这个问题:
#define _INTSIZEOF(n) \ ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1))
|
这样,将溢出的部份屏蔽掉。类似的做法还有:
numentries += (1UL << (20 - PAGE_SHIFT)) - 1; numentries >>= 20 - PAGE_SHIFT; numentries <<= 20 - PAGE_SHIFT;
|
通过+= n - 1,计算对齐值,然后通过右移再左移把相应的部份屏蔽掉。其思路与前面相同。
阅读(1017) | 评论(0) | 转发(0) |