Flatbuffers:我可以用1 int将int字段更改为struct吗?

时间:2017-04-16 06:04:49

标签: flatbuffers

基于flatbuffers的主要贡献者提出的 null 字段的非常好的方法:

https://github.com/google/flatbuffers/issues/333#issuecomment-155856289

  

获取整数字段的null默认值的最简单方法是换行   它在一个结构中。如果标量不存在,这将使您为空。它   也不会占用线上比常规int更多的空间。

struct myint { x:int; }
table mytable { scalar:myint; }enter code here
     

如果标量不存在,这将使您返回null。它也不需要   电线上的空间比普通的空间更多。

同样基于flatbuffers文档:

https://google.github.io/flatbuffers/md__schemas.html

  

一旦使用了字段,就无法更改它们的类型,除了相同大小的数据,其中reinterpret_cast会给你一个理想的结果,例如:如果当前数据中没有值使用高位,则可以将uint更改为int。

我的问题是,我可以将 int 视为 reinterpret_cast - myint 吗?

换句话说,如果我从一个简单的int开始作为一个字段,我可以稍后决定我真的希望这个int可以为空并将其更改为myint吗?我知道在myint模式中,第一个int模式中的默认值的所有值都将被读作 null ,我对此感到满意。

当然,明显的后续问题是我可以对所有标量类型做同样的事情吗?

1 个答案:

答案 0 :(得分:1)

虽然没有明确记录,但是,intmyint是线格兼容的(它们都是内联存储的)。就像你说的那样,你将失去任何默认值实例成为null