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