-
#ifndef MEM_ALIGNMENT
-
#define MEM_ALIGNMENT 4 //表示4个字节对齐
-
#endif
-
-
#ifndef LWIP_MEM_ALIGN_SIZE
-
#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1))
-
#endif
///////////////////////////////////////////////////////////////////////////////////////////////////////
-
#include <stdio.h>
-
-
#ifndef MEM_ALIGNMENT
-
#define MEM_ALIGNMENT 4
-
#endif
-
-
#ifndef LWIP_MEM_ALIGN_SIZE
-
#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1))
-
#endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
void main()
-
{
-
int size = 14;
-
printf("size:%d\n", LWIP_MEM_ALIGN_SIZE(size));
-
-
}
各各位老师、师兄:
求解答个问题:
//size = 14 为例, MEM_ALIGNMENT =4
//(14 + 4 - 1 ) & ~(4 - 1)
//所以size + MEM_ALIGNMENT - 1的范围是size < (size + MEM_ALIGNMENT - 1) < (size + MEM_ALIGNMENT)
//17 & ~3 //取反去除(MEM_ALIGNMENT - 1)上的位
//10001
//11100
//-----------
//10000 //得出正确的结果
这具size=14 对齐后就变成了16了
有什么意思吗、?
求解答 这样有什么意思 意义 |