我们使用内部序列化库。它使用模板化函数将变量写入流。
使用它时必须注意的一件事是确保使用特定长度类型。你可以使用int32_t等,但是如果你传递了一个' int',你可能会发现它在一个int具有不同大小的系统上被解压缩。然后解压缩失败。
如果有人试图使用非固定大小的变量,有没有办法导致编译错误?
答案 0 :(得分:7)
如果有人试图使用a,有没有办法导致编译器错误 非固定大小变量?
没有。这完全没有意义,因为int32_t
可能被定义为int
的typedef(并且经常是)。即std::is_same<int, std::int32_t>::value == true
。你无法区分它们。
序列化int
的大小,并在您要反序列化的平台上检查它。也就是说,检查sizeof int
与序列化数据的平台上的值是否相同。