【发布时间】:2017-03-14 13:03:23
【问题描述】:
我通过网络接收数据报,我想将数据复制到具有适当字段(对应于消息格式)的结构中。有许多不同类型的数据报(具有不同的字段和大小)。这是一个简化版本(实际上字段总是字符数组):
struct dg_a
{
char id[2];
char time[4];
char flags;
char end;
};
struct dg_a data;
memcpy(&data, buffer, offsetof(struct dg_a, end));
目前我在结构的末尾添加了一个名为end 的虚拟字段,以便我可以使用offsetof 来确定要复制多少字节。
有没有更好、更不容易出错的方法来做到这一点?我一直在寻找比使用__attribute__((packed)) 和使用sizeof 更便携的东西。
--
编辑
cmets 中有几个人说我的方法不好,但到目前为止,没有人提出原因。由于结构成员为char,因此成员之间没有陷阱表示和填充(由标准保证)。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。