首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在现有的32位代码中添加64位支持,困难吗?

在现有的32位代码中添加64位支持,困难吗?
EN

Stack Overflow用户
提问于 2010-11-02 21:40:08
回答 3查看 311关注 0票数 6

我在不同的32位平台上构建了一个库。现在,必须支持64位架构。扩展现有32位代码以支持64位体系结构的最通用策略是什么?我应该使用#ifdef还是其他任何东西?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-02 21:43:48

所涉及的工作量将完全取决于原始代码写得有多好。在最好的情况下,除了重新编译之外,不会涉及任何工作。在最坏的情况下,你将不得不花费大量的时间让你的代码"64位干净“。

典型问题包括:

根据缺省参数或函数结果转换(即,no function prototypes)

  • inappropriate int/long/pointer/etc

  • assigning /
  • int/long/pointer/etc
  • assigning关于结构的大小/对齐/填充)
    • <=> in
    • 的大小假设(尤其是在文件或网络I/O方面,或者在使用字节偏移量执行指针运算时

    与其他API的接口)

票数 16
EN

Stack Overflow用户

发布于 2010-11-02 21:43:06

完全不依赖于机器词大小的假设?总是使用sizeof、stdint.h等,除非你对不同的架构依赖不同的库调用,否则应该不需要#ifdefs。

票数 1
EN

Stack Overflow用户

发布于 2010-11-02 21:46:32

最简单的策略是使用64位设置构建您所拥有的内容,并对其进行测试。有些代码根本不需要更改。其他代码,通常对int/指针的大小有错误的假设,将更加脆弱,需要修改为不依赖于架构。

通常,包含二进制记录的二进制文件会导致最多的问题。在从32位到64位的转换过程中,int从32位增长到64位的环境中尤其如此。这主要是因为在64位构建中,整数以当前(32位)长度原生写入文件,并使用不正确的长度读入。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4078212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档