获取sizeOf(flatbuffers表)

时间:2018-07-20 17:27:43

标签: flatbuffers

我在C ++中使用Flatbuffers。我想在一个结构中创建一个字节数组,该结构与生成的表的大小相同(我正在将内容作为NanoMSG消息的有效负载发送)。

sizeof(table)如何工作?

#include "pnt_generated.h"

struct packetStruct {
    Topics topic;
    int payloadSize;
    uint8_t payload[sizeof(pnt)];
};

不能直接工作。

2 个答案:

答案 0 :(得分:0)

由于Flatbuffers似乎可以动态设置大小(在我的有效负载情况下)。没有人有更好的主意,我在结构中创建了一个固定大小的有效负载,然后检查是否超过了该值:

#define PayloadMax 256
#include "pnt_generated.h"

struct packetStruct {
    Topics topic;
    int payloadSize;
    uint8_t payload[PayloadMax];
};

答案 1 :(得分:0)

您可以从bufferbuilder获取有效负载的大小: flatbuffers::FlatBufferBuilder builder(1024);
auto l = CreateLogEvent(builder, builder.CreateString("INFO"), builder.CreateString("main.c"), builder.CreateString("Test Log Entry")); FinishLogEventBuffer(builder, l); auto ptr = builder.GetBufferPointer(); auto size = builder.GetSize();