根据代码来看很容易理解,下面就是实际的代码。
变长结构体的核心思想就是在结构体的最后一个数据结构为一个指针,这个指针指向的是这个结构体的末尾数据数组的首地址。
#include <stdlib.h>
typedef struct stru_zmq_server_msg
{
int deviceId;
int msgCode;
}TS_ZMQ_SERVER_MSG;
typedef struct stru_tcp_server_msg
{
int msgLength;
int msgBodyLen;
TS_ZMQ_SERVER_MSG zmqMsgBody[1];
}TS_TCP_SERVER_MSG;
int main()
{
int len = sizeof(TS_TCP_SERVER_MSG) + sizeof(TS_ZMQ_SERVER_MSG) * 2;
TS_TCP_SERVER_MSG* tdata = (TS_TCP_SERVER_MSG*)malloc(len);
tdata->msgLength = len;
tdata->msgBodyLen = 2;
TS_ZMQ_SERVER_MSG* data = (TS_ZMQ_SERVER_MSG*)tdata->zmqMsgBody;
data[0].deviceId = 100;
data[0].msgCode = 1;
data[1].deviceId = 101;
data[1].msgCode = 2;
free(tdata);
return 0;
}
转载文章
https://www.cnblogs.com/dangerman/archive/2012/12/16/2820825.html
网友评论