Macros et C++
C++ offre de nouvelles fonctionnalités, dont certaines supplantent celles offertes par le préprocesseur ANSI C. Ces nouvelles fonctionnalités améliorent la sécurité et la prévisibilité des types du langage :
En C++, les objets déclarés comme
const
pouvant être utilisés dans les expressions constantes. Il permet aux programmes de déclarer des constantes qui ont des informations de type et de valeur. Ils peuvent déclarer des énumérations qui peuvent être consultées symboliquement avec le débogueur. Lorsque vous utilisez la directive de préprocesseur#define
pour définir des constantes, il n’est pas aussi précis, et pas de type sécurisé. Aucun stockage n’est alloué pour unconst
objet, sauf si le programme contient une expression qui prend son adresse.La fonctionnalité de la fonction inline C++ supplante les macros de type fonction. Voici les avantages que présente l'utilisation des fonctions inline par rapport aux macros :
Sécurité de type. Les fonctions inline sont soumises à la même vérification du type que les fonctions normales. Les macros ne sont pas de type sécurisé.
Gestion correcte des arguments présentant des effets secondaires. Les fonctions inline évaluent les expressions fournies en tant qu’arguments avant l’entrée du corps de la fonction. Par conséquent, il n’est pas possible qu’une expression avec des effets secondaires soit dangereuse.
Pour plus d’informations sur les fonctions inline, voir inline, __inline, __forceinline.
À des fins de compatibilité descendante, toutes les fonctions de préprocesseur qui existaient dans les spécifications C ANSI et C ++ antérieures sont conservés pour Microsoft C++.