_ReturnAddress
Microsoft 전용
_ReturnAddress 내장 명령의 호출자에 게 컨트롤이 반환 된 후에 실행 될 함수 호출에 주소를 제공 합니다.
다음 프로그램 및 디버거에서 단계를 작성 합니다. 프로그램을 단계별로 실행 하는 것에서 반환 되는 주소를 확인 합니다. _ReturnAddress. 함수에서 반환 후 즉시 다음 위치 _ReturnAddress 되었습니다 사용 되는, 열려 있는 방법: 디스어셈블리 창 사용 다음 명령 실행할 수 있는 주소에서 반환 된 주소와 일치 하는지 확인 합니다. _ReturnAddress.
최적화 인라이닝 월 같은 반송 주소에 영향을 줍니다. 예를 들어, 다음 샘플 프로그램을 컴파일하는 경우 /Ob1, inline_func 를 호출 하는 함수를 인라인 하지 것입니다 main. 따라서 호출을 _ReturnAddress 에서 inline_func 및 main 각각 동일한 값이 생성 됩니다.
때 _ReturnAddress 함께 컴파일되는 프로그램에서 사용 되는 /clr, 포함 하는 함수는 _ReturnAddress 호출을 네이티브 함수로 컴파일할 수. 함수는 컴파일할 때 관리 되는 호출을 포함 하는 함수에 _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;
}