c++ - 如何获取函数内的函数返回地址?

标签 c++ visual-c++ gcc

我想在我的tracer中打印返回值,有两个问题

  1. 如何获取回邮地址?
  2. 返回位置在 ~Tracer() 之前或之后更新?

此处需要文本以便 Stackoverflow 格式化代码:

struct Tracer
{
  int* _retval;
  ~Tracer() 
  { printf("return value is %d", *_retval); }
};


int foo()
{
  Tracer __tracter = { __Question_1_how_to_get_return_address_here__ };

  if(cond) {
     return 0;
  } else {
     return 99;
  }

  //Question-2: 
  // return postion is updated before OR after ~Tracer() called ???
}

最佳答案

我找到了问题1的一些提示,现在检查Vc代码

对于 gcc,__builtin_return_address http://gcc.gnu.org/onlinedocs/gcc/Return-Address.html

对于 Visual C++,_ReturnAddress

关于c++ - 如何获取函数内的函数返回地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13476839/

相关文章:

c++ - 在 g++ 中启用严格的别名警告

c++ - 如何从for循环中获取值的总和

c++ - 如何改进此代码以便多线程运行?

shell - 以下 GNU make shell 变量扩展有什么问题?

c++ - 将全精度 double 输出到文本文件的最佳方法

c++ - 创建我的对象花费的时间太长。在启动时创建大量实例以加快速度是否是一种不好的做法?

c++ - 如何在 VC++ 中重新启动我自己的应用程序

c - 外部符号值自动分配到 RAM 的末尾

c++ - 为什么 valgrind "valid value"需要 8 位?

java - Java/C++算法配置框架