c中宏定义的一些应用积累

1.数据拆分宏定义
#define BYTE0(dwTemp)       ( *( (char *)(&dwTemp)    ) )
#define BYTE1(dwTemp)       ( *( (char *)(&dwTemp) + 1) )
#define BYTE2(dwTemp)       ( *( (char *)(&dwTemp) + 2) )
#define BYTE3(dwTemp)       ( *( (char *)(&dwTemp) + 3) )

在通讯中经常需要把数据拆成字节的形式,有多种方法这里是其中一种比较好用的方法

大致的处理过程是 对变量 dwTemp 去地址,然后将其强制转化成char类型的指针  最后再取出指针所指向的内容,这样就完成了对数据的拆分工作

 能完成这种功能的还有种写法就是利用结构体,准确说是联合体示例如下

typedef union 
{
	uint16_t u16_vale;
	uint8_t bytes[2];
}u16_type_u;

int mian ()
{
	u16_type_u u16;
	u16.bytes[0] = 10;
	u16.bytes[1] = 1;
	printf ("%d \n",&u16.u16_value);
	return 0;
}

以上均可以完成数据的拆分工作.


2.充当内联函数使用

示例如下:

#define LED1(a)	if (a)	\
					GPIO_SetBits(GPIOB,GPIO_Pin_0);\
					else		\
					GPIO_ResetBits(GPIOB,GPIO_Pin_0)
关于内联函数,有如下示例大致可说明含义
inline int max (int i ,int j, int k)
{
    if (i<j)
	i = j;
    if  (i<k)
	i = k;
    return i;
}
内联函数的优势在于减少频繁的调用可节省资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值