关于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的头地址
理解了么