共用方式為


_ReturnAddress

Microsoft 專有的

_ReturnAddress內建提供控制項傳回給呼叫者後,就會執行呼叫函式中的指令位址。

建立下列的程式和偵錯工具的逐步執行它。 當您逐步執行程式,請注意傳回的地址**_ReturnAddress**。 然後,從函式傳回之後,立即在**_ReturnAddress所使用的開啟如何:使用反組譯碼視窗 ,並記下所執行的下一個指令的位址符合所傳回的位址_ReturnAddress**。

這類的內嵌月最佳化會影響到 [寄件地址。 比方說,如果下面這個範例程式時加以編譯是 /Ob1, inline_func將會內嵌到呼叫的函式, main。 因此,呼叫**_ReturnAddress**的inline_func和main每一個將會產生相同的值。

當**_ReturnAddress在編譯的程式中使用 /clr,函式包含_ReturnAddress呼叫就會編譯成原生函式。 函式編譯為 managed 呼叫函式包含_ReturnAddress**, _ReturnAddress可能會無法如預期般。

需求

標頭檔 <intrin.h>

範例

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

請參閱

參考

_AddressOfReturnAddress

編譯器內建

C++ 關鍵字