如何在flatbuffers模式文件中声明指针类型?

时间:2018-08-05 07:20:23

标签: c schema flatbuffers

我正在学习平面缓冲区,并且希望在C语言中使用它们。 我想做的是为我的结构编写一个模式文件。 这是我的结构之一:

typedef struct
{
    unsigned short request_number;
    unsigned short length;
    unsigned short height;
    unsigned char   *buffer;
} CASH_RECEIPT_REQUEST;

如何在架构文件中写入指针unsigned char *buffer

2 个答案:

答案 0 :(得分:0)

不存储指针,而是存储它们指向的实际数据:

table CashReceiptRequest {
  request_number:ushort;
  length:ushort;
  height:ushort;
  buffer:[ubyte];      
}

如您所见,缓冲区是“ ubyte的向量”。请注意,如果length是缓冲区的大小,则该字段可以省略,因为该大小已经作为矢量的一部分存储了。

答案 1 :(得分:-1)

指针大小取决于平台。如果决定在具有8个字节大小的指针的64位处理器上使用它,则可以使用ulong(根据here中的架构指定),ulong大小为8个字节。因此,在解析方面,您可以将ulong(换句话说,是无符号长整数)类型转换为char *类型,以获得正确的指针值。 您的示例的示例架构如下所示:

CASH_RECEIPT_REQUEST {
  request_number:ushort;
  length:ushort;
  height:ushort;
  buffer:ulong;
}