我们可以使用链接中指定的零长度数组初始化结构:
零长度.
我使用以下结构:
typedef unsigned char UINT8;
typedef unsigned short UINT16;
typedef struct _CommandHeader
{
UINT16 len;
UINT8 payload[0];
} CommandHeader;
typedef struct _CmdXHeader
{
UINT8 len;
UINT8 payload[0];
} CmdXhHeader;
Run Code Online (Sandbox Code Playgroud)
现在,CommandHeader.payload应该指向/包含到CmdXHeader结构中.即内存应如下所示:
-------------------------------------------------------------
| CommandHeader.len | CmdXHeader.len | CmdXHeader.payload ....|
-------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我可以轻松地将malloc CmdXHeader/CommandHeader定制为自定义长度.但是如何为CmdXHeader有效负载分配值或如何将CmdXHeader对象链接到CommandHeader.payload?
谢谢你的回复.我用以下方式解决了它:
//Get the buffer for CmdXHeader:
size_t cmdXHeader_len = sizeof(CmdXHeader) + custom_len;
CmdXHeader* cmdXHeader = (CmdXHeader*) malloc(cmdXHeader_len);
//Get a temporary pointer and assign the data to it
UINT8* p;
p[0] = 1;
p[2] = 2; …Run Code Online (Sandbox Code Playgroud)