C99で追加された__func__を使えばOK。
void foo(void) { printf("%s()\n", __func__); }
void bar(void) { printf("%s()\n", __func__); }
int main(void) {
printf("%s()\n", __func__);
foo();
bar();
return 0;
}
これを実行すると
main
foo
bar
と表示される。 __func__がコンテキストに応じて値が変わる、文字列定数のように振る舞うわけ。
ちなみに__FILE__や__LINE__とは異なり、__func__はプリプロセッサが処理するマクロではない。 プロプロセッサが関数まで踏み込むはずが無いから、当然と言えば当然だけど。
0 件のコメント:
コメントを投稿