在编写可在 32 位和 64 位机器上移植的代码时应该记住哪些要点?

对此进行更多思考,我觉得如果您可以添加您在面临的问题方面的经验,那会有所帮助。

进一步补充说,我曾经因为缺少返回指针的函数的原型(prototype)而遇到问题。当我将它移植到 64 位机器上时,代码崩溃了,很长一段时间我都不知道原因,后来意识到所有丢失的原型(prototype)都假定返回 int 导致问题。

任何此类示例都可以提供帮助。

编辑:添加到社区维基。

最佳答案

陷阱:

  • 将指针转换为整数类型是危险的
  • 数据结构大小可以改变
  • 注意符号扩展
  • 不同的 ABI?

  • 我发现一些有用的提示和技巧:
  • 获得一个 native 大小的整数类型(从你自己的头文件或 typedef 中),当你有不关心大小的变量时使用它。
  • 尽可能使用显式变量类型(u_int64_t、int_32_t 等)
  • 关于c - 编写可移植到 32 位和 64 位体系结构的代码时要考虑的要点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2254222/

    10-14 14:48
    查看更多