0

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

所以我有以下解决方案

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

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

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

我知道这可能是小问题,但我无法找到通用解决方案。

4

2 回答 2

4

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

是的,从 C99 开始就有。

#include <stdint.h>

uint32_t foo;
于 2013-01-26T07:37:14.380 回答
3

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

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

于 2013-01-26T07:37:05.110 回答