C++可变长结构体

2020-09-14  本文已影响0人  钟离惜

根据代码来看很容易理解,下面就是实际的代码。
变长结构体的核心思想就是在结构体的最后一个数据结构为一个指针,这个指针指向的是这个结构体的末尾数据数组的首地址。

#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

上一篇 下一篇

猜你喜欢

热点阅读