在C中实现回调函数

use*_*013 6 c

我是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

  1. register 是一个C关键字:为该函数使用另一个名称.

  2. 你在回调参数周围有额外的parantheses.它应该是:

    void funcName(void (*callback) (void))
    
    Run Code Online (Sandbox Code Playgroud)


sta*_*ker 3

我建议使用 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)

编辑:删除了寄存器问题