有没有办法检测原始参数是否是可变大小?

Sco*_*ham 1 c++

我们使用内部序列化库.它使用模板化函数将变量写入流.

使用它时必须注意的一件事是确保使用特定长度类型.你可以使用int32_t等,但如果传递'int',你可能会发现它在一个int具有不同大小的系统上被解压缩.然后解压缩失败.

如果有人试图使用非固定大小的变量,有没有办法导致编译器错误?

Col*_*mbo 7

如果有人试图使用非固定大小的变量,有没有办法导致编译器错误?

不.这完全是荒谬的,因为很int32_t可能被定义为int(并且经常是)的typedef .即std::is_same<int, std::int32_t>::value == true.你无法区分它们.

int在您要反序列化的平台上序列化大小并检查它.也就是说,检查sizeof int具有与序列化数据的平台相同的值.

  • 是的,定义二进制协议,然后检查(反)序列化代码是否合适. (2认同)