1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#include <stdlib.h> static void *f_ptr[32]; static int f_ptr_pos = 0; int atexit(void (*function)(void)) { if(f_ptr_pos >= 32) return -1; f_ptr[f_ptr_pos++] = function; return 0; } void call_atexit_callbacks(void) { int i; void (*f)(void); for(i = (f_ptr_pos - 1); i >= 0; i--) (f = f_ptr[i])(); }