代码之家  ›  专栏  ›  技术社区  ›  kennyc

在平面缓冲区中使用自定义枚举

  •  0
  • kennyc  · 技术社区  · 6 年前

    我用的是 C++ API for FlatBuffers 存储和检索用Objective-C编写的MacOS应用程序的首选项。

    我存储的许多首选项都是我在整个应用程序中使用的typedef'd枚举。是否仍要在FlatBuffer架构中使用那些现有的枚举,以便我可以将它们用作默认值?

    例如,我要执行以下操作:

      table Preferences {
        layout:int = FLLayoutModeList;
        sidebar:int = FLSidebarElementInspector;
      }
    

    在哪里? FLLayoutModeList FLSidebarElementInspector 定义为 FLLayoutMode FLSidebarElement 在我的目标C中分别枚举。

    可以使用C++本机接口来完成吗?注意,我只是从我自己的代码中读取和写入这个flatbuffer。它不与其他应用程序共享,也不需要任何跨语言支持(如果这很重要)。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Aardappel    6 年前

    模式无法从非模式的东西(包括C++或目标C代码)中包含定义。不必复制它们的唯一方法是在flatbuffers模式中定义它们,并使用从中生成的代码。它不能反过来工作。

    注意,如果你使用的是目标C(与目标C++相反),你可以使用 flatcc 模式编译器生成纯C,这可能工作得更好。