带指针的通信结构体32位与64位兼容
最近做一个移植项目,将32位上的VPN移植到64位环境上。由于当初设计未考虑可移植性,导致移植时出现了很多的问题,其中最典型的一个问题就是通信结构带指针的问题。
场景分析:
如下的两个结构体,其中B在通信时做通信结构使用
class ptr{private:int shift;public:char* oprator=(char* p){ shift=(char*)this-p;return p;} //计算出p相对于this的偏移,保存下来,用作下次计算指针实际值用char* getptr(){return (char*)this + shift;}}