私はいくつかの調査を行いましたが、明確な承認または不承認を見つけることができません.
私が欲しいのは、固定サイズの構造と可変長の部分で、シリアライゼーションをシンプルでエラーの少ない方法で表現できるようにすることです。
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);