#include #include using namespace std; void Handler1(void) { cout << endl; cout << "A call to Handler 1" << endl; cout << endl; return; } void Handler2(void) { cout << endl; cout << "A call to Handler 2" << endl; cout << endl; return; } void Handler3(int code, void * data) { cout << endl; cout << "Handler 3 called status= " << code << " data= " << reinterpret_cast(data) << endl; cout << endl; return; } void Handler4(int code, void * data) { cout << endl; cout << "Handler 4 called status= " << code << " data= " << static_cast (data) << " *data = " << *(static_cast(data)) << endl; cout << endl; return; } // I need this in the global space as the local variables have gone out // of scope when the exit function is called. int value = 7; int main() { atexit(Handler1); atexit(Handler1); atexit(Handler2); atexit(Handler1); on_exit(Handler3, reinterpret_cast(42)); on_exit(Handler4, static_cast (&value)); return 5; }