我做了一些研究,但找不到明确的赞成或反对意见。
我想要的是一个固定大小的结构+可变长度的部分,这样序列化就可以用简单且不易出错的方式来表达。
struct serialized_data
{
int len;
int type;
char variable_length_text[0];
};
进而:
serialize_data buff = (serialize_data*)malloc(sizeof(serialize_data)+5);
buff->len=5;
buff->type=1;
memcpy(buff->variable_length_text, "abcd", 5);
不幸的是,我找不到 MSVC、GCC、CLang 等是否可以接受。
也许有更好的方法来实现同样的目标?
我真的不想要那些丑陋的演员:
memcpy((char*)(((char*)buffer)+sizeof(serialize_data)), "abcd", 5);