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

#include <stdio.h>
#include <stddef.h>

#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;
}

 

发布了31 篇原创文章 · 获赞 25 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 创作都市 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览