Sommaire

Dépasser ses programmes

1. Oublier les réflexes du langage C

Les programmeurs habitués au langage C ont sans doute prévu de nombreuses macros instructions traitées par le préprocesseur. C’est notamment le cas des constantes textuelles et de "fonctions" qui rendent bien des services.

Le langage C++ propose cependant des alternatives qui améliorent la sûreté du programme ainsi que sa rapidité.

Les constantes définies avec le mot-clé const, tout d’abord, présentent l’énorme avantage d’être vérifiées par le compilateur et non par le préprocesseur. En cas d’erreur - visibilité, orthographe... - le compilateur peut donner beaucoup plus de contexte au programmeur.

Les fonctions en ligne (inline) permettent de développer des instructions sans construire tout un cadre de pile, avec les conséquences que cela peut avoir sur la transmission des arguments et sur les performances. Naturellement, leur mise en œuvre doit satisfaire à quelques contraintes mais il y a des bénéfices certains à les employer.

Considérons l’exemple suivant, dans lequel une constante symbolique est définie à l’attention du préprocesseur. En cas d’erreur d’écriture dans le main, le compilateur n’a aucun moyen de préciser dans quel fichier .h elle pourrait ne pas correspondre. De même, nous avons décrit une macro ...