Pourquoi les pointeurs de fonction et les pointeurs de données sont-ils incompatibles en C / C ++?

J'ai lu que la conversion d'un pointeur de fonction à un pointeur de données et vice versa fonctionne sur la plupart des plates-formes, mais n'est pas garanti. Pourquoi est-ce le cas? Ne devrait pas être simplement des adresses dans la mémoire principale et donc compatible?

source d'informationauteur gexicide