我有一个结构:
typedef struct _message
{
int mode;
char system[25];
...
}message;
我想通过域套接字将其发送到另一个进程:
message msg;
//populate msg
....
unsigned char * data = &msg;
//allocate IPC buffer
unsigned char * ipc_buffer;
ipc_buffer = get_ipc_buffer(sizeof(message));
//Copy
memcpy(ipc_buffer,data,sizeof(message));
//Send
send_ipc_msg(ipc_buffer,sizeof(message);
//At the receving end
recv_ipc_msg(ipc_rcv_buffer,sizeof(ipc_rcv_buffer));
ipc_message* data = (message*)ipc_rcv_buffer;
//Access members
data->mode;
我认为可以将结构转换为(unsigned / signed char *)将其复制到IPC缓冲区并通过UDP域套接字发送,因为它是在给定平台内发送的。或者我是否仍然担心使用上述直接铸造方式并且不使用螯合剂来进行对齐问题和结构包装?