代码之家  ›  专栏  ›  技术社区  ›  Dr.YSG

获取sizeOf(flatbuffers表)

  •  0
  • Dr.YSG  · 技术社区  · 8 年前

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

    一个人怎样做一张桌子?

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

    不能直接工作。

    2 回复  |  直到 8 年前
        1
  •  0
  •   Dr.YSG    8 年前

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

    #define PayloadMax 256
    #include "pnt_generated.h"
    
    struct packetStruct {
        Topics topic;
        int payloadSize;
        uint8_t payload[PayloadMax];
    };
    
        2
  •  0
  •   Davin Thompson    7 年前

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