Compartir a través de


_ReturnAddress

Específicos de Microsoft

Función intrínseca de _ReturnAddress proporciona la dirección de la instrucción en la función de llamada que se ejecutará después de que el control vuelve al llamador.

Compile el programa y el paso siguientes a través de en el depurador. Como se recorre el programa, anote la dirección que se devuelve de _ReturnAddress. A continuación, inmediatamente después de cambiar de la función en la _ReturnAddress se utilizó, abra Cómo: Utilizar la ventana Desensamblador y observe que la dirección de la siguiente instrucción de ser coincidencias ejecutadas que la dirección devolvió de _ReturnAddress.

Optimizaciones tales como la pueden afectar al de. Por ejemplo, si el programa de ejemplo siguiente se compila con /Ob1, inline_func está alineada en la función que llama, main. Por tanto, las llamadas a _ReturnAddress de inline_func y a main se aplicará cada producen el mismo valor.

Cuando _ReturnAddress se utiliza en un programa compilado con /clr, la función que contiene la llamada de _ReturnAddress se compiló como función nativa. Cuando una función compilada como llamadas administradas en la función que contiene _ReturnAddress, _ReturnAddress no puede comportarse como se espera.

Requisitos

Archivo de encabezado <intrin.h>

Ejemplo

// 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;
}

Vea también

Referencia

_AddressOfReturnAddress

Intrínsecos del controlador

Palabras clave de C++