TI论坛
直播中

胡毅秉

7年用户 222经验值
私信 关注
[问答]

请问z-stack结构体默认对齐方式是一字节吗?

z-stack的结构体默认对齐方式是一字节吗?
在z-stack中可以将一般指针强制转换为结构体指针吗?

回帖(5)

李玉珍

2018-8-18 07:57:42
2530是单字节, 2538是四字节对齐。
你说的指针可以强转。
举报

胡毅秉

2018-8-18 08:07:36
引用: cmh9 发表于 2018-8-18 07:57
2530是单字节, 2538是四字节对齐。
你说的指针可以强转。

搞不懂以下这两个结构体为什么可以转换uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )[  afIncomingMSGPacket_t * MSGpkt;  if ( events & SYS_EVENT_MSG )  [    MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID );    while ( MSGpkt )    [      switch ( MSGpkt->hdr.event )      [                case KEY_CHANGE:          SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );          break;1typedef struct[  osal_event_hdr_t hdr;  uint8             state; // shift  uint8             keys;  // keys] keyChange_t;typedef struct[  osal_event_hdr_t hdr;     /* OSAL Message header */  uint16 groupId;           /* Message's group ID - 0 if not set */  uint16 clusterId;         /* Message's cluster ID */  afAddrType_t srcAddr;     /* Source Address, if endpoint is STUBAPS_INTER_PAN_EP,                               it's an InterPAN message */  uint16 macDestAddr;       /* MAC header destination short address */  uint8 endPoint;           /* destination endpoint */  uint8 wasBroadcast;       /* TRUE if network destination was a broadcast address */  uint8 LinkQuality;        /* The link quality of the received data frame */  uint8 correlation;        /* The raw correlation value of the received data frame */  int8  rssi;               /* The received RF power in units dBm */  uint8 SecurityUse;        /* deprecated */  uint32 timestamp;         /* receipt timestamp from MAC */  afMSGCommandFormat_t cmd; /* Application Data */] afIncomingMSGPacket_t;
举报

胡毅秉

2018-8-18 08:24:49
引用: cmh9 发表于 2018-8-18 07:57
2530是单字节, 2538是四字节对齐。
你说的指针可以强转。

两个结构体的成员不一样啊,会不会访问出错的?
举报

李玉珍

2018-8-18 08:39:21
引用: sagitturius 发表于 2018-8-18 08:24
两个结构体的成员不一样啊,会不会访问出错的?

消息头一直,第一次转换 一般只取消息头信息
举报

更多回帖

发帖
×
20
完善资料,
赚取积分