У меня такой код:
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)
что-нибудь о члене списка
?
Я могу проверить это с помощью своего компилятора, но работает ли каждый компилятор в этом случае аналогично?