MSVC等同于'__builtin_return_address'

问题描述 投票:5回答:1

使用msvc,是否与gcc的“ __builtin_return_address”等效?

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

visual-studio visual-c++ gcc gnu
1个回答
10
投票

__ReturnAddress

从MSDN:

_ReturnAddress内部提供指令中的地址调用将要执行的功能在控制权返回给调用者之后

请注意,在某些平台上,由于尾部折叠,结果可能会误导您-编译器的内部函数可能会返回2级深度。对于这样的代码,通常会发生这种情况:

int DoSomething()
{
   return DoSomethingSpecial();
}

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

此外,返回地址也不可靠-足以做出安全性决定,请参阅here。>

© www.soinside.com 2019 - 2024. All rights reserved.