32位长,64位长

时间:2013-01-26 07:34:53

标签: c++

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

所以我有以下解决方案

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

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

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

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

2 个答案:

答案 0 :(得分:4)

  

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

是的,there is,自C99。

#include <stdint.h>

uint32_t foo;

答案 1 :(得分:3)

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

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