大家好我想添加这个长变量l_cliend_id而不破坏此联合中的数据
union _V2_INPUT
{
struct _V2_HEADER header;
struct _IN_DETAIL detail;
struct _V2_TRAILER trailer;
};
如何干净地添加它而不破坏联合缓冲区中的现有数据?
答案 0 :(得分:1)
简单地说:
union _V2_INPUT
{
struct _V2_HEADER header;
struct _IN_DETAIL detail;
struct _V2_TRAILER trailer;
long l_cliend_id;
};
这允许您存储三个结构中的一个或仅存储l_cliend_id
。
与struct
不同,union
将元素放在相同的偏移处,因此您有&u->l_cliend_id == &u->header == &u->detail == &u->trailer
。这意味着您只能将四个中的一个放入已分配的内存中。如果您将数据放入header
和l_cliend_id
,则第二项任务将损坏header
。
不要忘记编译使用新联盟的所有代码!