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

时间:2014-11-24 17:30:15

标签: c++

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

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

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

1 个答案:

答案 0 :(得分:7)

  

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

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

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