2012-01-09 75 views
1

可能重复:
Is it ever possible to get the current (member) function name in C++?C中的函数的++名称或C

如果C或C中给出的函数int func(args) ++是有办法得到名字,甚至签名,功能from func

我希望能够做到这样的事情:

void func(void) 
{ 
    printf("%s", funcinfo.sig); 
} 

,并具有输出是:

"void func(void)" 

没有人知道的一种方式做到这一点?

+0

funcinfo.sig什么是?一个函数?一个变量? – Ivan 2012-01-09 12:49:19

+0

在C99中,你有标识符'__func__'和函数名(在你的例子中是“func”),没办法获得函数类型或参数。 – pmg 2012-01-09 12:49:38

+1

对于C部分:[C是否具有'__func__'函数的参数名称功能?](http://stackoverflow.com/questions/905999/does-c-have-func-functionality-for-names这个函数的参数)有答案。 – Xeo 2012-01-09 12:50:46

回答

3

__PRETTY_FUNCTION__预定标识用gcc:

void func(void) 
{ 
    printf("%s\n", __PRETTY_FUNCTION__); 
} 

它将打印:

void func() 

与GCC GCC在C++

func 

我n C

请注意,此标识符是gcc扩展名。在标准C中,有预定义标识符__func__,但只打印函数名称(C或C++)

2

“C99和C++ 11”中的“预定义标识符”__func__用于函数名称。