c - 为现有的 32 位代码添加 64 位支持,难吗?

标签 c embedded 64-bit 32bit-64bit

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

最佳答案

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

典型的问题是:

  • 关于 int/long/pointer 等大小的假设
  • 分配指针 <=> 整数
  • 依赖默认参数或函数结果转换(即无函数原型(prototype))
  • 不适当的 printf/scanf 格式说明符
  • 关于结构的大小/对齐/填充的假设(特别是关于文件或网络 I/O,或与其他 API 接口(interface)等)
  • 在使用字节偏移量进行指针运算时进行不适当的转换

关于c - 为现有的 32 位代码添加 64 位支持,难吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4078212/

相关文章:

c - 结构、typedef 和 malloc、calloc

c - 简单的C字符问题

Linux 输入设备事件,如何检索初始状态

linux - 如何使用嵌入式设备在内核上工作?

c - c结构的64位对齐/填充?

c - 查找二维数组单元内存位置

c - 指向 void 的指针作为函数中的参数,没有可变数量参数的原型(prototype)

c - 如何通过环绕将 4 字节数组移位所有 32 位?

.net - 从.Net托管代码加载32或64位DLL

c++ - 链接 LAPACK、64 位、Visual Studio 2013