+ -
当前位置:首页 → 问答吧 → 关于结构体的转换?

关于结构体的转换?

时间:2010-09-10

来源:互联网

结构体指针到结构体指针的转换,结构体指针到char *或字符数组的转换,char *或者字符数组到结构体指针的转换。
有没有人来说说,还有转换后的对齐问题?
有参考资料吗?

作者: ecjtubaowp   发布时间: 2010-09-10

不过是换了种解释方式而已 什么都没有改变

作者: tajial   发布时间: 2010-09-10

本帖最后由 zhangsuozhu 于 2010-09-10 15:57 编辑

有要注意的问题。在网络协议里。比如发送时的结构体设定了单字节对齐。然后把缓冲区发送过来。
而接收者没有设定单字节对齐,用指针指向接收缓冲,可能会造成协议的解析错误。

所以我觉的设计网络协议结构时,应该保正结构体每个元素都是双字节或四字节对齐的。

因为ARM不支持对非双字节对齐的数据进行32位的访问。
如:
  1. struct  porotocol_t
  2. {
  3.        unsigned long len;
  4.        char cmd
  5.        unsigned long auth;
  6. };
复制代码
如果是单字节对齐。
在ARM上
struct  porotocol_t *p = revbuf;

p->auth;  就会有问题。

作者: zhangsuozhu   发布时间: 2010-09-10

相关阅读 更多