我在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];
};