#include<stdio.h>
int add(int i,int j)
{
printf("\n%s\n",__FUNCTION__);
return (i*j);
}
int (*fp)(int,int);
void main()
{
int j=2;
int i=5;
printf("\n%s\n",__FUNCTION__);
fp=add;
printf("\n%d\n",(*fp)(2,5));
printf("\n%s\n",*fp);
}
答案 0 :(得分:4)
您可以将函数指针与指向函数的指针进行比较。像这样:
if (fp==add)
printf("\nadd\n");
没有其他(标准)方式 1 。
这个
printf("\n%s\n",*fp);
是编译错误。
有特定于平台的方式。对于linux,这有效:
#include<stdio.h>
#include <execinfo.h>
int add(int i,int j)
{
printf("\n%s\n",__FUNCTION__);
return (i*j);
}
int (*fp)(int,int);
union
{
int (*fp)(int,int);
void* fp1;
} fpt;
int main()
{
fp=add;
fpt.fp=fp;
char ** funName = backtrace_symbols(&fpt.fp1, 1);
printf("%s\n",*funName);
}