Visual C++ の 64 ビットへの移行に関する一般的な問題
Visual C++ を使用して、64 ビット Windows オペレーティング システムで実行するアプリケーションを作成する場合は、以下の点を考慮する必要があります。
int と long は、64 ビット Windows オペレーティング システムでは 32 ビット値です。64 ビット プラットフォーム用にコンパイルする必要があるプログラムでは、ポインターを 32 ビット変数に割り当てないように注意してください。ポインターは、64 ビットのプラットフォームでは 64 ビットなので、ポインターを 32 ビット変数に割り当てると、ポインター値を切り捨てることになります。
size_t、time_t、および ptrdiff_t は、64 ビット Windows オペレーティング システムでは 64 ビット値です。
time_t は、Visual C++ 2005 以前の Visual C++ バージョンの 32 ビット Windows オペレーティング システムでは 32 ビット値です。現在は、time_tは既定で 64 ビット整数です。詳細については、「時間管理」を参照してください。
コード内で int 値を使用する場所について、およびその値を size_t または time_t のどちらの値として処理するかについて考慮する必要があります。32 ビットよりも大きくなると、int ストレージに返されるときにデータが切り捨てられます。
%x (16 進数 int 形式) printf 修飾子は、64 ビット Windows オペレーティング システム上の場合のようには動作しません。この修飾子は、渡された値の最初の 32 ビット上でしか動作しません。
%I32x を使用して、32 ビット Windows オペレーティング システムに整数を表示します。
%I64x を使用して、64 ビット Windows オペレーティング システムに整数を表示します。
%p (ポインターに対して 16 進数形式) は、64 ビット Windows オペレーティング システム上と同様に動作します。
詳細については、次のトピックを参照してください。