对齐宏内核

前端之家收集整理的这篇文章主要介绍了对齐宏内核前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法理解这个宏是什么.这些在 linux内核中定义,但我的疑问是独立的.我无法理解(((x)(mask))&〜(mask))行是什么.
#define ALIGN(x,a)              __ALIGN_MASK(x,(typeof(x))(a)-1)
#define __ALIGN_MASK(x,mask)    (((x)+(mask))&~(mask))

任何帮助赞赏.

解决方法

假设你有一个数字:0x1006

由于某些原因,您希望将其与4个字节的边界对齐.

使用4字节边界,您知道对齐的值为0x1000,0x1004,0x1008等
然后您也知道0x1006的对齐值为0x1008.

你会如何获得0x1008?对齐值4的对准掩模为(4 – 1)= 0x03

现在0x1006 0x03 = 0x1009和0x1009& 〜0x03 = 0x1008

此操作是__ALIGN_MASK宏.

如果要传递值4(对齐方式)而不是直接传递0x03(对齐掩码),则具有ALIGN宏

猜你在找的C&C++相关文章