_ReturnAddress
Microsoft'a Özgü
intrinsic _ReturnAddress
, denetim çağırana geri döndükten sonra yürütülecek çağrı işlevindeki yönergenin adresini sağlar.
Aşağıdaki programı derleyin ve hata ayıklayıcıda adım adım ilerleyin. Programda adım adım ilerlediğinizde, adresinden _ReturnAddress
döndürülen adresi not edin. Ardından, kullanılan işlevden _ReturnAddress
döndükten hemen sonra Nasıl yapılır: Ayrıştırma Penceresini Kullanma'yı açın ve yürütülecek bir sonraki yönergenin adresinin, adresinden _ReturnAddress
döndürülen adresle eşleştiğine dikkat edin.
Satır içi gibi iyileştirmeler iade adresini etkileyebilir. Örneğin, aşağıdaki örnek program /Ob1 ile derlenmişse, inline_func
çağıran işlevinin main
içine satır içine alınır. Bu nedenle, ve main
çağrılarının _ReturnAddress
inline_func
her birinin aynı değeri üretmesi gerekir.
_ReturnAddress
/clr ile derlenen bir programda kullanıldığında, çağrıyı _ReturnAddress
içeren işlev yerel işlev olarak derlenir. Yönetilen olarak derlenen bir işlev içeren _ReturnAddress
_ReturnAddress
işleve çağrı yapıldığında beklendiği gibi davranmayabilir.
Gereksinimler
intrin.h üst bilgi dosyası<>
Örnek
// 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;
}
END Microsoft'a Özgü
Ayrıca bkz.
_AddressOfReturnAddress
Derleyici iç bilgileri
Anahtar Sözcükler