MSVC相当于'__builtin_return_address'

时间:2009-05-18 18:48:35

标签: visual-studio visual-c++ gcc gnu

使用msvc,是否有相当于gcc的“__builtin_return_address”?

我正在寻找调用函数的地址,深度为1级。

1 个答案:

答案 0 :(得分:9)

__ReturnAddress

来自MSDN:

  

_ReturnAddress内在提供   中的指令地址   调用将要执行的函数   控制后返回调用者

请注意,在某些平台上,由于尾部折叠,结果可能会产生误导 - 编译器可能会让您的内部函数返回2级深度。这通常适用于以下代码:

int DoSomething()
{
   return DoSomethingSpecial();
}

编译器可以生成代码,因此DoSomethingSpecial直接返回给DoSomething的调用者。

此外,返回地址不足以做出安全决策,请参阅here