No, this is not a function pointer declaration. This is just a tricky way to say
top->lo = 0;
top->hi = 0;
++top;
You can rewrite the above as a single expression using the operator ,
top->lo = 0, top->hi = 0, ++top;
then add unnecessary drops
top->lo = (void *) 0, top->hi = (void *) 0, ++top;
and a set of redundant ()s
(top->lo = (((void *) 0))), (top->hi = (((void *) 0))), ++top;
(void) (, , "" )
((void) ((top->lo = (((void *) 0))), (top->hi = (((void *) 0))), ++top));
.
- , () . . , ? ((void *) 0) NULL.