为了IPC的需要,将Struct转换为unsigned char *

时间:2016-08-07 03:06:38

标签: c struct

我有一个结构:

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域套接字发送,因为它是在给定平台内发送的。或者我是否仍然担心使用上述直接铸造方式并且不使用螯合剂来进行对齐问题和结构包装?

0 个答案:

没有答案