gpt4 book ai didi

c++ - 移植到不同架构的潜在问题

转载 作者:IT王子 更新时间:2023-10-29 00:32:32 25 4
gpt4 key购买 nike

我正在编写一个 Linux 程序,目前可以在 x86 和 x86_64 上编译并正常运行,现在我想知道是否需要做一些特别的事情才能让它在其他架构上运行。

我听说对于跨平台代码我应该:

  • 不要对指针的大小、int 或 size_t 做任何假设
  • 不要对字节顺序做出假设(我不做任何位移——我假设 gcc 会为我优化我的二次乘法/除法)
  • 不要使用组装 block (显而易见)
  • 确保您的库正常工作(我使用的是 SQLite、libcurl 和 Boost,它们看起来都非常跨平台)

还有什么我需要担心的吗?我目前没有针对任何其他架构,但我希望在某个时候支持 ARM,而且我想如果可以的话,我不妨让它在任何架构上运行。

此外,关于我关于字节顺序的第二点,我需要对文本输入做任何特殊的事情吗?我用 getline() 读取文件,所以它似乎也应该自动完成。

最佳答案

根据我的经验,一旦代码在几个架构上运行良好,它将更容易移植到第三个架构。输入应该不是问题。如果您在对齐有问题的地方做任何事情,结构对齐可能会成为一个问题。

注意任何可能与平台相关的事情:依赖以相同方式对齐的位域,假设变量具有特定大小等。如果您的代码相对硬件而言是抽象的,您可能会遇到一些问题。如果您正在使用网络代码之类的东西进行操作,则必须确保正确对齐网络字节顺序。

我已将设备驱动程序从 PPC 移植到 x86,然后再移植到 x86_64;在几千行中,可能有一些变化,主要与结构和整数排序有关。

当然,唯一确定的方法就是尝试。

关于c++ - 移植到不同架构的潜在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2687475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com