我有一段如下的代码:
typedef struct
{
u32 count;
u16 list[];
} message_t;
...
message_t* msg = (message_t*)buffer;
msg->count = 2;
msg->list[0] = 123;
msg->list[1] = 456;
size_t total_size = sizeof(*msg) + sizeof(msg->list[0]) * msg->count;
send_msg( msg, total_size );
有问题的代码行是包含 sizeofs 的那一行。我不确定这是否是计算所需空间的正确方式。
sizeof(*msg)
是否已经包含了 list
成员的信息?
我可以使用我的编译器进行测试,但每个编译器在这种情况下是否都工作类似呢?