1.在接口传递参数的时候经常会定义一些结构体,进行数据传递
2.在文件存储的时候也经常定义一些结构体,对结构体初始化后进行保存
后面因为系统升级,可能需要修改传递的参数,但是为了维护系统兼容这个时候就很棘手了
所以我们在定义结构体的时候首先就要考虑修改兼容的问题
我们定义结构体的时候一定要定义一个长度,一个版本
struct Name
{
一个长度
一个版本
数据体
}
虽然下面这样的定义是 大小也是固定的,但是在不同的编译环境下(不同的编译器,不同版本的编译器都会造成大小不一致或者类型无法解析,主要是CString或者map这类数据各个编译器实现的不一致造成的)
struct Name
{
int nSize;
int nVer;
CString strName
std::vector
}
所以对于需要多个模块公用的结构体 我们最好都是基础类型的 如果有变长的数据可以定义成指针,将数据放到指针指向的缓冲区
struct Header
{
int nSize;
int nVer;
char szName[8];
int nAge;
int nBufSize;//说明p指向缓冲的大小
void* p;//指向缓冲 这里存可变的数据
}
这个带结构体大小和版本的结构体能更好的处理兼容问题和存储问题,
1.存储文件还是要定义好文件的格式,扩展兼容等问题是需要处理的 dlis这样的格式就算一种比较不错的格式
2.不管是网络协议还是文件协议都是为了交互数据的 所以他们定义协议的时候情况差不多
二 位定义的结构体,也是很方便对于位的操作
struct bitset
{
int a:8;
int b:2;
int c:6;
} ;



