4

現在の関数へのポインターを取得することは可能ですか? もしそうなら、どうすればできますか?

動機: ロギングを行う関数があり、呼び出したい

log(currentfunc, "blabla")

たとえば、これはいくつかの出力を行います。

4

3 に答える 3

5

__func__C99 の一部である事前定義された識別子を介して、現在の関数の名前を取得できます (ただし、関数へのポインターではありません) 。

log(__func__, "blabla");

ここに参照があります

于 2012-09-26T13:21:34.347 に答える
2

関数へのポインターについてはわかりませんが、定義済みの識別子__func__は関数の名前を返します。多分それは助けることができます...

実際、関数をマクロに置き換えて、log毎回名前を貼り付ける必要がないようにします。

#define log(x) log(__func__,x)
于 2012-09-26T13:21:36.380 に答える
0

__ FILE ____ LINE __の組み合わせを使用できます。MicrosoftおよびGCCコンパイラで動作します。

于 2012-09-26T13:23:17.453 に答える