Sdílet prostřednictvím


_ReturnAddress

Konkrétní společnosti Microsoft

_ReturnAddress Vnitřní poskytuje adresu instrukce volání funkce, která bude provedena po ovládací prvek se vrátí k volajícímu.

Vytvořte následující program a krokovat v debuggeru.Program krocích, poznamenejte si adresu vrácená z _ReturnAddress.Poté ihned po návratu z funkce kde _ReturnAddress byla použité, Otevřít Postupy: Použití okna zpětného překladu a Všimněte si, že adresy mají být provedeny další instrukce odpovídá adrese vrátil z _ReturnAddress.

Optimalizace například inlining může mít vliv na zpáteční adresu.Například následující ukázkový program je kompilována s /Ob1, inline_func bude inlined do volání funkce main.Proto volání na _ReturnAddress z inline_func a main ohlásí každou stejnou hodnotu.

Při _ReturnAddress je používán program zkompilován s /clr, obsahující funkce _ReturnAddress volání bude zpracován jako nativní funkce.Při funkci zkompilován jako spravované volání do funkce obsahující _ReturnAddress, _ReturnAddress mohou chovat dle očekávání.

Požadavky

Záhlaví souboru <intrin.h>

Příklad

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

Viz také

Referenční dokumentace

_AddressOfReturnAddress

Vnitřní funkce kompilátoru

Klíčová slova jazyka C++