2

Windows が LP データ モデルの代わりに LLP を使用していることは知っていますが、定義済みの変数などはありますか? OS X/Linux では、 を使用できます__LP64__

4

3 に答える 3

5

One way to check is with _WIN64, which is defined only on 64-bit Windows (see here and here). For example:

#if defined(__LP64__)
// LP64 machine, OS X or Linux
#elif defined(_WIN64)
// LLP64 machine, Windows
#else
// 32-bit machine, Windows or Linux or OS X
#endif
于 2010-04-01T18:15:42.993 に答える
0

そのような変数かどうかはわかりませんが_MSC_VER、Visual Studio で定義される をテストできます。次に、LLP モデルを想定できます。将来これが変更された場合は、の値を使用して、_MSC_VERコンパイラのバージョンに対してテストできます。

標準サイズの型を探している場合は、固定ビットサイズの整数型を定義するboost::integerを調べてください。

于 2009-11-18T22:01:42.953 に答える
-1

本当にプリプロセッサ変数が必要ですか (場合によっては必要になる場合もありますが、なくてもよい場合もあります)。sizeof(long) == sizeof(void*)十分ではありませんか?

于 2009-11-18T21:59:44.430 に答える