Je reviens a la charge
J'ai remarqué quelque chose d'assez etonnant avec le preprocesseur :
Lorsque l'on fait un test avec des #if de ce genre :
#define UN 1
#define DEUX 2
#if ((UN + DEUX) == 3)
// ...
#endif
Le preprocesseur est capable d'evaluer (UN + DEUX).
Alors je sais que c'est pas dans la norme standard C, mais je me demande pourquoi :
#define TROIS (UN + DEUX)
n'est pas evalué dans ce cas (tâche qui est dechargée au compilateur a cause de la norme).
C'est etonnant que la norme n'ai pas pris ca en charge, puisqu'on a vu que le preprocesseur était capable d'évaluer une expression de lui-meme
Meme les modulos sont évalués; alors pourquoi des opérations si basiques ne sont pas reconnues par le preprocesseur ?
J'hesite entre un oubli lors de la redaction de la norme ou alors il y a une raison particuliere mais je ne vois pas laquelle...
Edit > Et...ca m'embete bien cette histoire
Edit2 > En fin d'compte, la raison est peut-etre toute bete

:
#define UN 1
#define DEUX C // hum! (sachant que le preprocesseur ne fait aucune verification de validité...)
#define TROIS (UN + DEUX)