Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中函数的名称+;或C_C++_C_Reflection - Fatal编程技术网

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您是对的,这正是我要找的。