Bonjour,

je suis en train de jouer avec le feu en transtypant des pointeur en fonctions en int et vice-versa, et pendant mes expériences, je suis tombé sur une erreur de compilation qui ne semble pas très logique :

Voici un bout de code qui compile sans problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
void foo ( void ) {}
void bar ( void ) {}
int p = (int)foo + 3 ;
Mais si je change le + en * ou ^ , j'ai une "error: initializer element is not constant".

Ou si j'introduit un autre pointeur de fonction int p = (int)foo + (int)bar ;, j'ai la même erreur.

Pourquoi râle-t-il alors qu'il n'y a que des constantes dans les calculs ?

Pour info, j'ai les mêmes erreurs avec gcc et Visual Studio.