获取 sizeOf(a flatbuffers Table)

Getting the sizeOf(a flatbuffers Table)

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

如何做 sizeof(table)?

#include "pnt_generated.h"

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

不直接起作用。

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

#define PayloadMax 256
#include "pnt_generated.h"

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

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