我在不同的32位平台上构建了一个库。现在,必须支持64位架构。扩展现有32位代码以支持64位体系结构的最通用策略是什么?我应该使用#ifdef还是其他任何东西?
发布于 2010-11-02 21:43:48
所涉及的工作量将完全取决于原始代码写得有多好。在最好的情况下,除了重新编译之外,不会涉及任何工作。在最坏的情况下,你将不得不花费大量的时间让你的代码"64位干净“。
典型问题包括:
根据缺省参数或函数结果转换(即,no function prototypes)
与其他API的接口)
发布于 2010-11-02 21:43:06
完全不依赖于机器词大小的假设?总是使用sizeof、stdint.h等,除非你对不同的架构依赖不同的库调用,否则应该不需要#ifdefs。
发布于 2010-11-02 21:46:32
最简单的策略是使用64位设置构建您所拥有的内容,并对其进行测试。有些代码根本不需要更改。其他代码,通常对int/指针的大小有错误的假设,将更加脆弱,需要修改为不依赖于架构。
通常,包含二进制记录的二进制文件会导致最多的问题。在从32位到64位的转换过程中,int从32位增长到64位的环境中尤其如此。这主要是因为在64位构建中,整数以当前(32位)长度原生写入文件,并使用不正确的长度读入。
https://stackoverflow.com/questions/4078212
复制相似问题