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

问题描述 投票:0回答:1

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

void foo(uint32 var)

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

c 64-bit
1个回答
0
投票

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

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

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

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