C++ C+中函数的名称+;或C
可能重复:C++ C+中函数的名称+;或C,c++,c,reflection,C++,C,Reflection,可能重复: 如果在C或C++中给定函数 int FUNC(ARGs)< /C> >,有一种方法可以从函数的名称中获得函数的名称,甚至签名。 我希望能够做到以下几点: void func(void) { printf("%s", funcinfo.sig); } 输出为: "void func(void)" 有人知道这样做的方法吗?C99中的“预定义标识符”和C++11`中的函数名。C99中的“预定义标识符”和C++11`中的函数名。有和gcc中的预定义标识符: void func
如果在C或C++中给定函数<代码> int FUNC(ARGs)< /C> >,有一种方法可以从函数的名称中获得函数的名称,甚至签名。 我希望能够做到以下几点:
void func(void)
{
printf("%s", funcinfo.sig);
}
输出为:
"void func(void)"
有人知道这样做的方法吗?C99中的“预定义标识符”和C++11`中的函数名。C99中的“预定义标识符”和C++11`中的函数名。有
和gcc中的预定义标识符:
void func(void)
{
printf("%s\n", __PRETTY_FUNCTION__);
}
它将打印:
void func()
在C中使用gcc++
及
在C中使用gcc
请注意,此标识符是一个gcc扩展。在标准C中,有预定义的标识符\uuuuu func\uuuu
,但它只打印函数名(C或C++)有\uuu PRETTY\u function\uuuu
带有gcc的预定义标识符:
void func(void)
{
printf("%s\n", __PRETTY_FUNCTION__);
}
它将打印:
void func()
在C中使用gcc++
及
在C中使用gcc
请注意,此标识符是一个gcc扩展。在标准C中,有预定义的标识符\uuuu func\uuu
,但它只打印函数名(C或C++)funcinfo.sig什么是?函数?变量?在C99中,您有标识符\uuuuu func\uuuu
和函数名(在您的示例中为“func”),无法获取函数类型或参数。对于C部分:有答案。@Xeo您是对的,这正是我要找的。funcinfo.sig什么是?函数?变量?在C99中,您有标识符\uuuuu func\uuuu
和函数名(在您的示例中为“func”),无法获取函数类型或参数。对于C部分:有答案。@Xeo您是对的,这正是我要找的。