正在获取sizeOf(一个平面缓冲区表)



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

一个人怎样做(桌子(的尺寸?

#include "pnt_generated.h"
struct packetStruct {
Topics topic;
int payloadSize;
uint8_t payload[sizeof(pnt)];
};

不直接工作。

您可以从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();

因为Flatbuffers似乎是动态设置大小的(在我的有效负载中(。没有人有更好的想法,我正在结构中创建一个固定大小的有效载荷,然后检查我是否超过了这个值:

#define PayloadMax 256
#include "pnt_generated.h"
struct packetStruct {
Topics topic;
int payloadSize;
uint8_t payload[PayloadMax];
};

相关内容

最新更新