While answering a question about function pointers, OP did that to declare a function pointer which takes 1 integer argument and returns nothing:
void *(intr_handlerptr)(int); // wrong but compiles!!
intr_handlerptr = intr_handler; // compiler error: cannot assign to this weird thing (lvalue required as left operand of assignment)
when the proper declaration is
void (*intr_handlerptr)(int); // correct
What's funny is that the error occurs when assigning to this function pointer, not when declaring it (tested with gcc 7.3.1)
So what does that first line do?