如何引用结构中的函数指针?
我现在在Log.c里定义了一个结构
struct Log
{
append_function append;
fixedQueue_t *fq;
};
同时定义了一个函数
int Log_append(char*msg)
{
printf(msg);
return 0;
}
然后这样写初始化函数
Log_t * Log_init(int size)
{
Log_t* log ;
log= calloc(1,sizeof(Log_t));
fixedQueue_t *fq = queue_init(size);
log-> fq = fq;
log-> append = Log_append;
return log;
}
头文件里这样调用
typedef int (*save_function)(void);
typedef int (*append_function)(char* msg);
typedef struct Log Log_t;
然后我在Log.c里的main函数写上测试代码
int main(int argc, char** argv)
{
//test();
Log_t* log = Log_init(20);
log-> append( "hello ");
return (EXIT_SUCCESS);
}
这样写我能调用
我现在在另一个c文件里的main函数写同样的代码
结果gcc报错
提示我提领指向不完全类型的指针
问题处在log-> append( "hello ")里
我想知道这是为什么。有人能帮助我吗?
[解决办法]
那
int Log_append(char*msg)
{
printf(msg);
return 0;
}
是在哪里定义的,最好把所有代码贴出来