将我的库迁移到64位时,我是否必须更改param的类型?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将我的库迁移到64位时,我是否必须更改param的类型?相关的知识,希望对你有一定的参考价值。

我正在将我的库从32位迁移到64位。该库用C编写。请使用以下API:

void foo(uint32 var)

在任何情况下都必须将var的类型更改为uint64吗?如果var的最大值不大于0xffffffff怎么办?

答案

在任何情况下都必须将var的类型更改为uint64吗?如果var的最大值不大于0xffffffff怎么办?

没有什么说您在为64位编译时不必更改数据类型。 uint32参数的行为与之前相同。 (但是,如果要保证数据类型正确运行,则应该使用uint32_t中的<stdint.h>。)

[您还有其他一些地方想要您要更改的变量的大小,但是如果使用正确的数据类型,行为将自动正确:

  • uintptr_t这是指针大小的整数。因此,您可以从void*投射到uintptr_t,然后返回,而不会丢失任何信息。如果改为从void*转换为uint32_t,则会破坏指针。
  • off_t文件偏移的大小可能会发生变化(取决于您的工具链),因此您应该使用此适当的typedef。

以上是关于将我的库迁移到64位时,我是否必须更改param的类型?的主要内容,如果未能解决你的问题,请参考以下文章

将更改从开发 APEX 应用程序迁移到生产环境?

是否可以更改 EF 迁移“迁移”文件夹的位置?

升级到 64 位时 Cordova Sqlite 数据库错误

如何将我的应用程序从 IOS 13 迁移到 IOS 14?

我应该将我的 firebase 数据库迁移到 firestore 数据库吗?

我需要在短时间内学习 vuex,因为我不知道如何将我的 vue js 迁移到 vuex?