__ptr32、__ptr64__ptr32, __ptr64

Microsoft 固有の仕様Microsoft Specific

_ _ptr32 32 ビット システムでネイティブ ポインターを表すときに _ _ptr64の 64 ビット システムでネイティブ ポインターを表します。__ptr32 represents a native pointer on a 32-bit system, while __ptr64 represents a native pointer on a 64-bit system.

次の例は、これらのポインター型のそれぞれを宣言する方法を示します。The following example shows how to declare each of these pointer types:

int * __ptr32 p32;
int * __ptr64 p64;

32 ビット システムで宣言されたポインター _ _ptr64は 32 ビット ポインターに切り詰められます。On a 32-bit system, a pointer declared with __ptr64 is truncated to a 32-bit pointer. 64 ビット システムで宣言されたポインター _ _ptr32は 64 ビット ポインターに変換します。On a 64-bit system, a pointer declared with __ptr32 is coerced to a 64-bit pointer.

注意

使用することはできません _ _ptr32または _ _ptr64でコンパイルするときに /clr: 純粋なします。You cannot use __ptr32 or __ptr64 when compiling with /clr:pure. それ以外の場合、コンパイラ エラー C2472 が生成されます。Otherwise, Compiler Error C2472 will be generated. /Clr: 純粋な/clr:safeコンパイラ オプションは Visual Studio 2015 で非推奨とされ、Visual Studio 2017 でサポートされていません。The /clr:pure and /clr:safe compiler options are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017.

以前のバージョンとの互換性のため _ptr32_ptr64のシノニムで _ _ptr32_ _ptr64しない限り、コンパイラ オプション/Za(言語拡張機能を無効にする)を指定します。For compatibility with previous versions, _ptr32 and _ptr64 are synonyms for __ptr32 and __ptr64 unless compiler option /Za (Disable language extensions) is specified.

Example

次の例を宣言のポインターの割り当てでは、 _ _ptr32_ _ptr64キーワード。The following example shows how to declare and allocate pointers with the __ptr32 and __ptr64 keywords.

#include <cstdlib>
#include <iostream>

int main()
{
    using namespace std;

    int * __ptr32 p32;
    int * __ptr64 p64;

    p32 = (int * __ptr32)malloc(4);
    *p32 = 32;
    cout << *p32 << endl;

    p64 = (int * __ptr64)malloc(4);
    *p64 = 64;
    cout << *p64 << endl;
}
32
64

Microsoft 固有の仕様はここまでEND Microsoft Specific

関連項目See also

基本的な型Fundamental Types