vc代码移植linux,从Windows(x86)到Linux(x64)的代码移植总结

由于最新的引擎要支持x64 Linux,算是实战了一把代码移植技术,这里就将移植相关的技术做一总结,和各位沟通交流,也方便作为手册随时查阅

这里总结的是从win32到 x64 Linux的移植,其中涉及到32到64移植和windows到Linux的移植过程,这里先说明一下。

首先就Windows和Linux之间的差异列举如下,开发环境基于VC 2005(Windows 7)和GCC(x64 Linux)

1、基本类型间差异

有做过windows 32位到windows64位移植的朋友应该清楚,VC 64对VC 32的兼容性很高,除了指针的长度从32位提高到了64位,其他基本类型没有任何差别,这样使得windows中的32到64移植基本没有什么工作量,只要代码中没有指针到其他类型的强制转换,基本上代码拉过来直接编译一下就能用了。这里的32到64的变化有一个名词就叫LLP64(long long and pointer 64)。这样的话VC 64中要使用64 bit的整形,就需要使用long long类型。

在GCC 64中,采用的则是另外一种模型,即LP64,其中基本类型long从32位变换为64位。在LP64模型中,牺牲掉了兼容性,这样导致代码中凡是涉及long的地方都要谨慎对待,尤其在编写32位代码过程中将long认为和int等同,则更有可能存在潜在问题。

除此之外,wchar_t的长度也是不一样的,VC下是2字节,GCC下则是4字节。

2、数据对齐问题

由于在x86架构下,32位和64位数据对齐可以说不是什么问题,只是VC和GCC之间使用的关键字不同,使用方法也不太一样࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值