- 主题:c++反射提案正式进入标准
哎,,,洋人就是喜欢简单问题复杂化。
实际上,编译器只需要为每个struct输出一个表,说明里边成员的名称,类型,长度,位置,等即可。这个表也占不了多大空间,爱用不用。
我就是为想泛型处理的struct建个表,运行时用起来也挺方便的,效率不低。
自己弄最难的是位置,得猜编译器的心思。
【 在 ae175b1bf388 的大作中提到: 】
: 应该是跨编译单元需要动态反射, 一次编译好的静态反射就行
:
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
静态反射一点用没有。既然还没脱离编译环境,要反射干啥,直接用成员好了。
【 在 ae175b1bf388 的大作中提到: 】
: 应该是跨编译单元需要动态反射, 一次编译好的静态反射就行
:
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
其实很简单,生成一个xxxx_metainfo的信息表就足够了。
【 在 ae175b1bf388 的大作中提到: 】
: 我觉得是代码里用到的类型metainfo编译进去了, 没用到的就省掉了, 可能理解有误
: 静态反射一点用没有。既然还没脱离编译环境,要反射干啥,直接用成员好了。
--
FROM 221.218.61.*
我设想一个算子解决。
metainfo *mtp;
mtp=get_metainfo(xxx_struct);
这是一个算子,不是函数,普通的函数是无法根据struct去寻找其metainfo的。这一步必须由编译器直接处理。
以后,在运行时使用metainfo就随便了。
而且不管C或C++都可以使用。
然后这样使用mtp就可以了:
struct_to_JSON(json,&xxx_struct,mtp);
这个函数是通用函数,与xxx_struct不在一个编译环境,也不认识它,全靠mtp指引。
如果metainfo是公开的,当然也可以由数据库表构建。
【 在 ae175b1bf388 的大作中提到: 】
: 我觉得是代码里用到的类型metainfo编译进去了, 没用到的就省掉了, 可能理解有误
: 静态反射一点用没有。既然还没脱离编译环境,要反射干啥,直接用成员好了。
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*