程序分为两个大版本:1.0和2.0;主要区别是数据结构的不同;
现在希望在程序中,通过一个人为的选择框,选择版本是1.0的还是2.0的,然后根据它,
在数据交互的时候,把程序中的数据依照版本对应到相应的数据结构上,
比如
#ifdef V1.0
uint16 ReceiverMID;
uint16 SenderMID;
#else
uint16 MsgTYPE;
#endif其中的预定义能否通过人为的进行选择;
同时,这些数据结构的定义都是直接编译在程序里面的,不会开放结构的定义。个人感觉似乎无法行得通,因为预定义似乎是编译之前的行为,在已经编译好了程序之后,还能改变其结构?
如果不行的话呢,又该如何处理呢,希望路过的大神提供些思路
现在希望在程序中,通过一个人为的选择框,选择版本是1.0的还是2.0的,然后根据它,
在数据交互的时候,把程序中的数据依照版本对应到相应的数据结构上,
比如
#ifdef V1.0
uint16 ReceiverMID;
uint16 SenderMID;
#else
uint16 MsgTYPE;
#endif其中的预定义能否通过人为的进行选择;
同时,这些数据结构的定义都是直接编译在程序里面的,不会开放结构的定义。个人感觉似乎无法行得通,因为预定义似乎是编译之前的行为,在已经编译好了程序之后,还能改变其结构?
如果不行的话呢,又该如何处理呢,希望路过的大神提供些思路
然后在数据结构定义的地方,再次的对所有的版本的数据结构进行定义,然后,在数据上传的地方,利用GetDataVersion这类函数的返回值,选择不同的数据版本,然后来读取,因为读取时是要使用sizeof(结构体)来确定要读取的长度的,还好的是,变动的地方不大,就是显示部分会有些麻烦,需要屏蔽掉版本差异的地方。
先这两天试一试,要是可以的话,就算解决了吧,虽然没有达到最初想要的目的。
CreateXXX(int id,void** pStruct);
DestroyXXX(int id,void** pStruct);
等签名,将结构(类)和id绑定,然后动态连接不同版本的dll