呼び出し元(親関数)の関数名を取得する関数を作りたいのですが
行き詰まってしまいました。
初めに書いたのは以下のコードなのですが
C++
1const char *name = __func__;
これでは呼び出し元ではなく子関数の名前が出力されてしまい上手くいきませんでした。
そこでこのサイトのスクリプトに習い、コードを入力したところ、#include <dlfcn.h> とヘッダーを呼び出しているにも関わらず、Dl_info info;の部分で「unknown type name 'Dl_info'」というエラーになってしまい、ビルドできない状態になっています。
C++
1#include <stdio.h> 2#define __USE_GNU 3#include <dlfcn.h> 4 5void hoge() { 6 Dl_info info; //ここでエラーとなる。 7 dladdr(__builtin_return_address(0), &info); 8 printf("[%s] parent func name => %p [%s]\n", 9 __func__, 10 __builtin_return_address(0), 11 info.dli_sname); 12}
一体何が原因なのでしょうか。試行錯誤してもエラーが消えない状態です。
どうぞよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー