将我的库迁移到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的类型?的主要内容,如果未能解决你的问题,请参考以下文章
升级到 64 位时 Cordova Sqlite 数据库错误