今天在搞一个项目系统联调才知道,vector在vs2015和vs2018里面的sizeof是不同的。
如果在通信程序里面,收发程序是用不同版本vs编译,那就有点蛋疼了。简单结构的无所谓,自己可以随意拆分,自己开心就行,但是,如果收发的数据结构比较复杂和数据内容比较多,自己拆分起来就比较蛋疼了。
想到的解决方案:
1、统一开发工具及版本。能更好,关键有时候不是一个人开发,且有时使用的库的开发工具也不好改变,不然调试时候不好跟进去调试。所以,有时候是没办法。
2、开头提到的自己随意拆分和组合,看到有个家伙就这么干的,我个人认为这种方式不妥,不然我们定义数据结构干嘛,吃饱了撑的,自己对调试对数据的时候还不疯掉。
3、我采用的方法,数据结构其他部分照样用,只是用之前把容器内容单独提出来,用简单类型替代,发之前把容器内容清空,把单独提出来的部分附加到整个数据包的头或尾。但是,这种方法肯定也不好,没有解决根本问题。现在还不知道怎么处理……
vector是stl中模板类,本身和编译器版本就有关。 sizeof直接作用于vector的用法就不符合规范