__ptr32, __ptr64

Section spécifique à Microsoft

__ptr32 représente un pointeur natif sur un système 32 bits, tandis qu’il __ptr64 représente un pointeur natif sur un système 64 bits.

L'exemple suivant montre comment déclarer chacun de ces types pointeur :

int * __ptr32 p32;
int * __ptr64 p64;

Sur un système 32 bits, un pointeur déclaré avec __ptr64 est tronqué vers un pointeur 32 bits. Sur un système 64 bits, un pointeur déclaré avec __ptr32 est coerced vers un pointeur 64 bits.

Remarque

Vous ne pouvez pas utiliser __ptr32 ou __ptr64 lors de la compilation avec /clr :pure. Sinon, l’erreur du compilateur C2472 est générée. Les options du compilateur /clr :pure et /clr :safe sont déconseillées dans Visual Studio 2015 et non prises en charge dans Visual Studio 2017.

Pour la compatibilité avec les versions précédentes, _ptr32 et _ptr64 sont des synonymes et __ptr64__ptr32, sauf si l’option du compilateur /Za (désactiver les extensions de langage) est spécifiée.

Exemple

L’exemple suivant montre comment déclarer et allouer des pointeurs avec les mot clé et __ptr64 les __ptr32 points de terminaison.

#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

FIN de la section spécifique à Microsoft

Voir aussi

Types intégrés