我建立了一个针对不同32位平台的库。现在,必须支持64位体系结构。扩展现有32位代码以支持64位架构的最常用策略是什么?我应该使用#ifdef还是其他什么?
答案 0 :(得分:16)
所涉及的工作量将完全取决于原始代码的编写程度。在最好的情况下,除了重新编译之外,不会涉及任何其他工作。在最坏的情况下,您将不得不花费大量时间使您的代码“64位清洁”。
典型问题是:
答案 1 :(得分:1)
根本不依赖于机器字大小的假设?总是使用sizeof,stdint.h等。除非你依赖不同的库调用不同的架构,否则不需要#ifdefs。
答案 2 :(得分:-1)
最简单的策略是使用64位设置构建您拥有的内容并测试其中的内容。有些代码根本不需要改变。其他代码,通常对int /指针大小的错误假设将更加脆弱,需要修改为不依赖于体系结构。
通常,包含二进制记录的二进制文件会导致大多数问题。在从过渡到64位构建的内容从32位增长到64位的环境中尤其如此。这主要是因为整数以当前(32位)长度本地写入文件,并在64位构建中使用不正确的长度读取,其中整数为64位。