void SET_ONERROR(ONERROR tmp, void (*func)(void *), void *arg);
'tmp' has to be a local variable.
void do_something() {