MSVC等同于'__builtin_return_address'的功能是什么?

6

在msvc中,是否有类似于gcc的"__builtin_return_address"的功能?

我想要找到调用函数的地址,只需要深入1个级别。

1个回答

11

__ReturnAddress

来自MSDN:

_ReturnAddress内置函数提供了调用函数中将在控制返回给调用方后执行的指令的地址。

请注意,在某些平台上,由于尾部折叠,结果可能会产生误导 - 编译器可能使您的内部函数返回2个级别。这通常发生在像这样的代码中:

int DoSomething()
{
   return DoSomethingSpecial();
}

编译器可以生成代码,使得DoSomethingSpecial直接返回给调用者。 此外,返回地址不够可靠,无法做出安全决策,请参见这里

1
请注意,函数名是 _ReturnAddress 而不是 __ReturnAddress,这与答案中最初的指示不同。 - Benjamin Crawford Ctrl-Alt-Tut

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接