如何将struct作为数组传输?

时间:2013-07-13 14:57:22

标签: c serialization casting struct

我在嵌入式系统中有一个struct有3个16位值:

struct {
    uint16_t x;
    uint16_t y;
    uint16_t z;
};

struct将被传输到在同一硬件上运行相同软件的另一个系统。通过发送一系列8个8位值(send_data(uint8_t *data))来完成传输。

我的想法是给send_data结构的地址。最后两个字节将被视为垃圾。这会有用吗?这样安全吗?

2 个答案:

答案 0 :(得分:1)

只要您在另一端正确处理它,这应该是安全的(例如,不要将两个字节写入随机位置)。

我还建议你在代码中清楚地评论这个问题,以便将来的维护人员不会遇到麻烦。


OR

您可以更改发送和接收的结构,以便在末尾包含数据的名称(例如填充)。这将允许您在发送之前将这些字节清零。然后代码应该对任何工作的人都非常清楚,如果正确实现应该对性能没有影响。

答案 1 :(得分:1)

  1. 这会有用吗? - 是(send_data结构的地址。)

  2. 安全吗?操作上是,但测试没有。

  3. 建议发送垃圾。根据需要填充给send_data()的数据(2个字节),并将额外的内容初始化为0,这样可以简化调试并进行一致的回归测试。