Condividi tramite


_ReturnAddress

Sezione specifica Microsoft

L'oggetto _ReturnAddress intrinseco fornisce l'indirizzo dell'istruzione nella funzione chiamante che verrà eseguita dopo il ritorno del controllo al chiamante.

Compilare il programma seguente ed eseguirlo nel debugger. Durante l'esecuzione del programma, prendere nota dell'indirizzo restituito da _ReturnAddress. Quindi, subito dopo la restituzione dalla funzione in cui _ReturnAddress è stato usato, aprire procedura : usare la finestra disassembly e notare che l'indirizzo dell'istruzione successiva da eseguire corrisponde all'indirizzo restituito da _ReturnAddress.

Le ottimizzazioni, ad esempio l'inlining, possono influire sull'indirizzo restituito. Ad esempio, se il programma di esempio seguente viene compilato con /Ob1, inline_func verrà inlined nella funzione chiamante , main. Di conseguenza, le chiamate a _ReturnAddress da inline_func e main produrranno lo stesso valore.

Quando _ReturnAddress viene usato in un programma compilato con /clr, la funzione contenente la _ReturnAddress chiamata verrà compilata come funzione nativa. Quando una funzione compilata come chiamate gestite nella funzione contenente _ReturnAddress, _ReturnAddress potrebbe non comportarsi come previsto.

Requisiti

<File di intestazione intrin.h>

Esempio

// compiler_intrinsics__ReturnAddress.cpp
#include <stdio.h>
#include <intrin.h>

#pragma intrinsic(_ReturnAddress)

__declspec(noinline)
void noinline_func(void)
{
   printf("Return address from %s: %p\n", __FUNCTION__, _ReturnAddress());
}

__forceinline
void inline_func(void)
{
   printf("Return address from %s: %p\n", __FUNCTION__, _ReturnAddress());
}

int main(void)
{
   noinline_func();
   inline_func();
   printf("Return address from %s: %p\n", __FUNCTION__, _ReturnAddress());

   return 0;
}

Fine sezione specifica Microsoft

Vedi anche

_AddressOfReturnAddress
Intrinseci del compilatore
Parole chiave