- 主题:如何写一个函数能够序列化任意结构
是的。实际上是一套模板解释系统。
按照模板的指示,盲人摸象的按名称找到成员的位置,类型 长度,格式。
【 在 poikilotherm 的大作中提到: 】
: 你这不是还要依赖你的额外的结构说明书吗?
: --
: 发自xsmth (iOS版)
--
修改:ylh0315 FROM 221.221.50.*
FROM 221.221.50.*
反正实现了,而且实现了第三方软件的数据结构的序列化反序列化。只利用它的.h,配一组模板。模板可以手写,也可以半自动或自动生成。
【 在 KillnCov 的大作中提到: 】
: 你这不叫做到。
--
修改:ylh0315 FROM 221.221.50.*
FROM 221.221.50.*
感觉你要的是 boost::serialize
C/C++里做序列化绕不开的是你需要知道结构体的定义,如果是这样的话,其实不会比
boost::serialize 功能更全,最多做到更易用。
除非你能做到像python一样用pickle就能序列化/反序列化,不需要知道结构体的定义。
【 在 ylh0315 的大作中提到: 】
: 写一个函数:
: struct_to_json(void* any_struct,JSON json,template describe)
: 然后,把json转换为字符串。
: ...................
--
FROM 58.33.81.*
不仅是serialize,还有SRM和ORM呢。可以理解为扩展的serialize。把结构数据序列化到数据库。
protobuf也是,能够序列化 不能ORM。
使用特定的对象,不能使用已有的对象,就如第三方软件里的结构。
【 在 RunningOn 的大作中提到: 】
: 感觉你要的是 boost::serialize
: C/C++里做序列化绕不开的是你需要知道结构体的定义,如果是这样的话,其实不会比
: boost::serialize 功能更全,最多做到更易用。
: ...................
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
模板就是描述了结构体的定义。
【 在 RunningOn 的大作中提到: 】
: 感觉你要的是 boost::serialize
: C/C++里做序列化绕不开的是你需要知道结构体的定义,如果是这样的话,其实不会比
: boost::serialize 功能更全,最多做到更易用。
: ...................
--
FROM 221.221.50.*
point就是你必须得知道结构体的定义啊。你如果能做到不需要知道定义,那就nb。
硬要说的话,用模板描述还不如用struct描述更方便呢。
就你说的这个问题而言,序列化、反序列化是核心,写数据库还是存文件这个是比较tr
ivial的。
【 在 ylh1969 的大作中提到: 】
: 模板就是描述了结构体的定义。
--
FROM 58.33.81.*
是得知道。第三方软件也得给.h。按照.h写模板。
运行时没有struct呀,只有模板。
这个struct_to_json()写好了在.a或.so里。它不知道任何的结构,仅仅依据模板存取数据。所以是运行时模板,编译期是啥也不知道的。
【 在 RunningOn 的大作中提到: 】
: point就是你必须得知道结构体的定义啊。你如果能做到不需要知道定义,那就nb。
: 硬要说的话,用模板描述还不如用struct描述更方便呢。
: 就你说的这个问题而言,序列化、反序列化是核心,写数据库还是存文件这个是比较tr
: ...................
--
修改:ylh0315 FROM 221.221.50.*
FROM 221.221.50.*
莫非是实现了 .c 的语法解析,根据 struct 反推?
【 在 ylh0315 的大作中提到: 】
: 是得知道。第三方软件也得给.h。按照.h写模板。
--
FROM 47.243.39.*
差不多。反推结构布局。待会发个东西看看。
【 在 hgoldfish 的大作中提到: 】
: 莫非是实现了 .c 的语法解析,根据 struct 反推?
:
--
修改:ylh0315 FROM 221.221.50.*
FROM 221.221.50.*
感觉可以啊。 c 语言是比较简单的,纯为这个目的写个这种解析器听起来并不难。github 上面看到一些 c 语言解析器的开源代码库或者 libclang 拿起来开干。唯一的麻烦是增加预编译步骤很多人不喜欢。
【 在 ylh0315 的大作中提到: 】
: 差不多。反推结构布局。
--
FROM 47.243.39.*