Oracle Solaris Studio 12.2: C++ ユーザーズガイド

4.10 事前定義済み __func__ シンボルの関数名としての使用

コンパイラでは、それぞれの関数で __func__ 識別子が const char 型の静的配列として暗黙的に宣言されます。プログラムの中で、この識別子が使用されていると、コンパイラによって次の定義が追加されます。ここで、function-name は関数の単純名です。この名前には、クラスメンバーシップ、名前空間、多重定義の情報は反映されません。


static const char __func__[] = "function-name";

たとえば、次のコードを考えてみましょう。


#include <stdio.h>
void myfunc(void)
{
  printf("%s\n", __func__);
}

この関数が呼び出されるたびに、標準出力ストリームに次の情報が出力されます。


myfunc

識別子 __FUNCTION__ も定義され、__func__ と同等になります。