The __func__ predefined identifier

The C99 predefined identifier __func__ makes a function name available for use within the function. Immediately following the opening brace of each function definition, __func__ is implicitly declared by the compiler. The resulting behavior is as if the following declaration had been made:

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

where function-name is the name of the lexically-enclosing function. The function name is not mangled.

C++ only

The function name is qualified with the enclosing class name or function name. For example, if foo is a member function of class X, the predefined identifier of foo is X::foo. If foo is defined within the body of main, the predefined identifier of foo is main::X::foo.

The names of template functions or member functions reflect the instantiated type. For example, the predefined identifier for the template function foo instantiated with int, template<classT> void foo() is foo<int>.

End of C++ only

For debugging purposes, you can explicitly use the __func__ identifier to return the name of the function in which it appears. For example:

#include <stdio.h>

void myfunc(void)    {  
         printf("%s\n",__func__);  
         printf("size of __func__ = %d\n", sizeof(__func__));  
}  

int main() {  
     myfunc();  
} 

The output of the program is:

myfunc  
size of __func__=7 

Related information



[ Top of Page | Previous Page | Next Page | Contents | Index ]