__ptr32, __ptr64
Seção específica da Microsoft
__ptr32
representa um ponteiro nativo em um sistema de 32 bits, enquanto __ptr64
representa um ponteiro nativo em um sistema de 64 bits.
O exemplo a seguir mostra como declarar cada um desses tipos de ponteiro:
int * __ptr32 p32;
int * __ptr64 p64;
Em um sistema de 32 bits, um ponteiro declarado com __ptr64
é truncado em um ponteiro de 32 bits. Em um sistema de 64 bits, um ponteiro declarado com __ptr32
é imposto a um ponteiro de 64 bits.
Observação
Você não pode usar __ptr32
ou __ptr64
ao compilar com /clr:pure. Caso contrário, será gerado o Erro do Compilador C2472. As opções do compilador /clr:pure e /clr:safe foram preteridas no Visual Studio 2015 são incompatíveis com o Visual Studio 2017.
Para compatibilidade com versões anteriores, _ptr32 e _ptr64 são sinônimos de __ptr32
e __ptr64
, a menos que a opção do compilador /Za (Desabilita extensões de linguagem) seja especificada.
Exemplo
O exemplo a seguir mostra como declarar e alocar os ponteiros com as palavras-chave __ptr32
e __ptr64
.
#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
Fim da seção específica da Microsoft