回调函数示例(清晰易懂)

#include 
#include 

#define CALLBACK_MAX 10

typedef void (*callback_t)(void);
static callback_t callbacks[CALLBACK_MAX];
static size_t n = 0;

void register_callback(callback_t callback)
{
    if (n == CALLBACK_MAX)
        return;
    callbacks[n++] = callback;
}

void run_callbacks(void)
{
    while (--n < (size_t)-1)
        callbacks[n]();
}

void foo(void) { puts("foo!"); }
void bar(void) { puts("bar!"); }
void baz(void) { puts("baz!"); }

int main(void)
{
    register_callback(&foo);
    register_callback(&bar);
    register_callback(&baz);
    run_callbacks();
    return 0;
}

 

你可能感兴趣的:(回调函数示例(清晰易懂))