如何在运行时查看哪个函数分配给函数指针..?

时间:2013-09-18 06:03:37

标签: c++ c

#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);
}

1 个答案:

答案 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);
}