Hier mal die Fehler, mit dev-cpp überprüft:

Code:
*(p2 + x)
p3 + x -> Fehler, void-Pointer; keine Pointerarithmetik
pf = f1() -> Falsch, pf = f1 würde gehen
*(p3 + x) ->  Fehler, void-Pointer; keine Pointerarithmetik
p1 == p3 ? f1 : pf
~p2  -> wrong type to bit-complement
!p2 
*p1 && p1
s || x
pf2 == f3
s | x
(*pf)(f1()) -> zu viele Argumente ( int (*pf)(void) )
pf = f1
pf2 = f3
f = f3(f)  -> f3 gibt void zurück
*p3 -> nicht möglich bei void*