我是C的新手.我正在尝试使用函数指针实现回调函数.
我收到了一个错误
:test_callback.c:10: error: expected identifier or ‘(’ before ‘void’
Run Code Online (Sandbox Code Playgroud)
当我尝试编译以下程序时:
#include<stdio.h>
void (*callback) (void);
void callback_proc ()
{
printf ("Inside callback function\n");
}
void register ((void (*callback) (void)))
{
printf ("Inside registration \n");
callback (); /* Calling an initial callback with function pointer */
}
int main ()
{
callback = callback_proc;/* Assigning function to the function pointer */
register (callback);/* Passing the function pointer */
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是什么错误?有人可以帮忙吗?
int*_*jay 19
register 是一个C关键字:为该函数使用另一个名称.
你在回调参数周围有额外的parantheses.它应该是:
void funcName(void (*callback) (void))
Run Code Online (Sandbox Code Playgroud)我建议使用 typedef
#include<stdio.h>
typedef void (*callback_t) (void);
callback_t callback;
void callback_proc(void)
{
printf ("Inside callback function\n");
}
void reg( callback_t _callback )
{
printf ("Inside registration \n");
_callback();
}
int main ()
{
callback = callback_proc;
reg(callback);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑:删除了寄存器问题
| 归档时间: |
|
| 查看次数: |
9413 次 |
| 最近记录: |