归档 2010年3月11日

最后更新于 .

最近在做项目的时候,遇到一个问题,即结构体内的字段可能会在未来的时间内不停的增加(不会减少或者删除),所以在打包解包的时候就会涉及到版本兼容的问题,并且是向前和向后同时兼容。

我们先来看一下,如果结构体的内容永远不变,那么我们用结构体自解析的方法:


typedef struct _farmbase_land1
{/*{{{*/
unsigned char ID;
unsigned char bitmap;
_farmbase_land1()
{
ID = 0;
bitmap = 0;
}
int Output(unsigned int /*ver*/,char*& buff,int& iLen,int iMaxLen)
{/*{{{*/
int needLen = sizeof(unsigned char)*2;
if(needLen>iMaxLen)
{
return FBErrSystemNoMem;
}
char *t_Buff = buff;
*(unsigned char*)t_Buff = ID;
t_Buff+=sizeof(unsigned char);
*(unsigned char*)t_Buff = bitmap;
t_Buff+=sizeof(unsigned char);
iLen ...

昨天

2010年3月10日

明天

2010年3月15日

归档