Initialisateur constant vu comme non-constant.
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:
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.