__builtin_return_address不会将变量作为参数

时间:2016-11-14 22:31:41

标签: c++ g++

这令人困惑。使用g ++ 4.9.1:

int main()
{
    void* r1 = __builtin_return_address(0); // fine
    unsigned int foo = 0;
    void* r2 = __builtin_return_address(foo); // does not compile
 }

返回的错误是error: invalid argument to ‘__builtin_return_address’

文档说这个函数采用unsigned int。我知道__builtin函数有各种各样的怪异,这可能就是生命的方式,但是我需要能够通过递增变量逐步完成这个事情,我试图实现堆栈转储器。如果它只接受不断的论证,那是不可能的。

有解决方法还是更好的方法?

1 个答案:

答案 0 :(得分:0)

只需将您自己的巨大开关/案例或if / else树设置为您可能需要的最多级别。您可以使用宏来简化它。