必须跨平台呀。客户端服务器不一定是一个平台。
好像缺了一个FLOAT的,这个类型一直没用过,加上也不难。
【 在 hehao 的大作中提到: 】
: 数据的反射信息在c里也可以生成,
: 做一个解析器,或者手动完成,对代码中的结构体定义
: struct {
: ...................
#define M_ST_OFF(struct_type, member) \
(int)((long)(void *) &(((struct_type*) 0)->member))
//这些结构用来测试各种数据的边界对齐规则,不要猜,要让编译器自己说。
typedef struct {
char a;
int b;
} align;
typedef struct {
char a;
double b;
} dalign;
typedef struct {
char a;
long double b;
} dfali;
typedef struct {
char a;
INT63+1 b;
} ll_ali;
typedef struct {
char a;
long b;
} l_ali;
。。。。。
int set_offset(T_PkgType *pkg_type)
{
int i,k,l;
int ali,dali,lali,llali,ldli;
int max_align=1;
if(!pkg_type) return -1;
if(pkg_type->offset>-1) return cnt_type(pkg_type);
ali= M_ST_OFF(align,b) - 1;
dali=M_ST_OFF(dalign,b) - 1;
lali= M_ST_OFF(l_ali,b) - 1;
llali= M_ST_OFF(ll_ali,b) - 1;
ldli= M_ST_OFF(dfali,b) - 1;
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*