Ändert nichts. Die Fehler/Warnungen bleiben.

Nachtrag: Der Cast beim Initialwert bringt was, der Fehler mit dem ignored void bleibt aber.

Nachtrag 2: Anscheinend hab ich den Fehler grad behoben.
"Einfach" eine 2. Typedef dazu...
Code:
typedef void(*vfptr_t)(void); 
typedef vfptr_t(*fptr_t)(void);
Und dann doch noch den Cast bei FPTR = (fptr_t)FPTR();, dann bringt der Compiler weder Warnungen noch Fehler.
(Ok, ich weiss, einfach rummurksen, bis der Compiler ruhig ist, ist nicht immer die beste Möglichkeit. Aber wenns so geht, lass ichs mal so)

Werd Nachmittag mal prüfen, ob das Programm dann auch so läuft wie's soll.