功能指针出错

时间:2011-02-11 04:07:03

标签: c function pointers function-pointers

我正在使用这个资源来帮助我使用函数指针:here但是在这段代码中(如下所示),gcc上的编译说:

line 15: warning: dereferencing 'void*' pointer
line15:error:called object *foo is not a function

代码在这里:

#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>

void print_mess(void *ptr)
{
        char *message = ptr;
        printf("%s\n",message);
}
void main()
{
        void* foo = print_mess;
        char *mess = "Hello World";
        (*foo)((void*)mess);
}

非常简单的测试功能来刷新我的知识,我很尴尬甚至遇到这样的问题,更不用说发布在SO上了。

1 个答案:

答案 0 :(得分:4)

您的指针类型错误。你需要使用:

void (*foo)(void *) = print_mess;

看起来很奇怪,但这是一个函数指针定义。你也可以输入它:

typedef void (*vp_func)(void *);
vp_func foo = print_mess;