微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于OSAL.H中的几个宏定义的问题?

关于OSAL.H中的几个宏定义的问题?

时间:10-02 整理:3721RD 点击:

 

#define OSAL_MSG_NEXT(msg_ptr)      ((osal_msg_hdr_t *) (msg_ptr) - 1)->next    //这里为什么要对msg_ptr减一计算
#define OSAL_MSG_LEN(msg_ptr)      ((osal_msg_hdr_t *) (msg_ptr) - 1)->len

#define OSAL_MSG_ID(msg_ptr)      ((osal_msg_hdr_t *) (msg_ptr) - 1)->dest_id

这三个宏定义都是对osal_msg_hdr_t结构体的成员的值,我不懂的是为什么给定一个结构体指针msg_ptr后还要对指针减一操作,是为了获得msg_ptr上一个结构体变量的dest_id, len, next成员吗?那这样做处于什么目的呢?而不是获得当前指针msg_ptr指向的结构变量的成员呢!

谢谢你的回答!

 

 

内存映射

     MSG_HDR: MSG_CONTENT

发送给上次app时,指针指向MSG_CONTENT的开始地址,app得到消息指针后,需要通过减1操作来获取MSG_HDR的头地址

理解了么

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top