MSVC等同于“__builtin_return_address”
-
22-08-2019 - |
题
使用MSVC,有一个相当于gcc的 “__builtin_return_address”?
我希望找到调用函数的地址,1级深。
解决方案
从MSDN:
在_ReturnAddress固有提供 在该指令的地址 将要执行的函数调用 后控制返回给调用者
请注意,在某些平台上,结果可能会产生误导,由于尾部折叠 - 编译器可能有你的内部函数返回2级深。这可以针对这样的代码通常发生:
int DoSomething()
{
return DoSomethingSpecial();
}
所以DoSomethingSpecial直接返回的DoSomething的呼叫者的编译器可以生成代码。
另外,返回地址是不值得信赖,足以做出安全决策,看到的此处。
不隶属于 StackOverflow