32 位长与 64 位长

32 bit long vs 64 bit long

本文关键字:位长      更新时间:2023-10-16

我正在研究已迁移到 32 位机器到 64 位机器的项目(与 Python 的 c++ 集成)。在 Python 中,C long 与 Python Integer 映射。所以我无法在 Python 接口(客户端接口)中更改,并且总是从 python 客户端收到溢出错误。它在 32 位机器中工作正常

所以我有以下解决方案

1)在64位机器中将所有长整型转换为int。

2)在 64 位机器中声明 32 位长。

我们是否有任何通用解决方案/头文件,让我可以选择声明 32 位数据类型总是所以我可以用更一般的方式处理这个问题。

我知道这可能是一个小问题,但我无法找到一般的解决方案。

我们是否有任何通用解决方案/头文件,让我可以选择始终声明 32 位数据类型?

是的,有,因为 C99。

#include <stdint.h>
uint32_t foo;

标准 C99(及更新版本)具有<stdint.h>标头,为 32 位有符号整数(和许多其他类型)定义int32_t,最近的C++<cstdint>

如果您关心bignums(任意精度数字),请注意这是一个困难的主题,并使用一些现有的库,如GMP。