0

私は、32 ビット マシンから 64 ビット マシンに移行したプロジェクト (Python との c++ 統合) に取り組んでいます。Python では、C long は Python Integer にマップされます。SO Python Interface(client interface) で変更できず、常に 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>

bignum (任意精度の数値)が気になる場合は、難しいテーマであることに注意し、GMPなどの既存のライブラリを使用してください。

于 2013-01-26T07:37:05.110 に答える