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