数据的反射信息在c里也可以生成,
做一个解析器,或者手动完成,对代码中的结构体定义
struct {
int a;
char b;
} dummy_t;
根据上下文的对齐规则和数据大小规则,生成类似这个结构
meta meta_dummy_t[3]={ TYPE_INT, ALIGN_4, SIZE_4, MD5_NAME(a),
TYPE_CHAR, ALIGN_4, SIZE_4,MD5_NAME(b),
NULL, NULL, NULL,MD%_NAME(0)};
在发生数据交互时,可以交互这个数据的元数据
(dummy_t*)get_data
(meta*)get_data_meta
跨平台使用是个麻烦,打包int是按照4字节打包,假如目标只接受
8字节对齐int数据访问;这时候需要根据获取的meta_dummy_t改造
当前平台的数据结构布局,并实现赋值;还有一个要注意的是在不同
大小端架构上交换位域数据结构体时顺序也是要转换的
【 在 ylh1969 的大作中提到: 】
: 难点是计算offset。
: struct的offset比较好算,class的,我不会算,只能等着反射来解决了。
: 效率问题,计算一次即可,之后的使用就不必算了。
: ...................
--
FROM 120.231.170.*