2

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

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

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

我的想法只是给出send_data结构的地址。最后两个字节将被视为垃圾。这行得通吗?安全吗?

4

2 回答 2

1
  1. 这行得通吗?- 是(send_data 结构的地址。)

  2. 安全吗?操作上是的,但测试不是。

建议不要寄垃圾。根据需要填充给定的数据send_data()(2 个字节)并将额外的数据初始化为某个值,例如 0。这将简化调试并进行一致的回归测试。

于 2013-07-13T15:38:58.380 回答
1

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

我还建议你在代码中清楚地评论这个问题,这样未来的维护者就不会遇到麻烦。


或者

您可以更改发送和接收的结构,以在末尾包含数据的名称(例如填充)。这将允许您在发送之前清空这些字节。那么代码对任何使用它的人来说都应该很清楚,如果实施得当,应该不会影响性能。

于 2013-07-13T15:08:58.397 回答