这令人困惑。使用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函数有各种各样的怪异,这可能就是生命的方式,但是我需要能够通过递增变量逐步完成这个事情,我试图实现堆栈转储器。如果它只接受不断的论证,那是不可能的。
有解决方法还是更好的方法?
答案 0 :(得分:0)
只需将您自己的巨大开关/案例或if / else树设置为您可能需要的最多级别。您可以使用宏来简化它。