用宏定义字节对齐

有时候我们需要对一个数字节对齐。

实例代码:

#include <stdio.h>
 
#define CEILING_2_POWER(x,a)     ( ((x) + ((a) - 1) ) & ( ~((a) - 1) ) )//字节对齐
 
#define A(x,a)     ((x) + ((a) - 1) )//先加
 
#define B(x,a)     ( ~((a) - 1) )//再用低位取零
int main( )
{
    unsigned int i = 15, j = 16;
	printf("0x%x\n", CEILING_2_POWER(i,j));
	printf("0x%x\n", A(i,j));
	printf("0x%x\n", B(i,j));
		
    return 0;
}

运行结果:

0x10
0x1e
0xfffffff0

原文
http://blog.csdn.net/yuanbinquan/article/details/42738025