« Programmation C++/Le préprocesseur » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 23 :
===#ifdef, #ifndef, #endif et #else===
====Présentation====
Toutes ces directives permettent la compilation conditionnelle.
* La directive ''#ifdef'' permet d'inclure toute une série de lignes du programme si une variable de compilation a précédemment été définie (par la directive #define). La directive ''#endif'' indique la fin de la partie de code à inclure. La partie du programme incluse sera toute la partie comprise entre le ''#ifdef'' et le prochain ''#endif''.
C'est à dire que la partie du code comprise entre la directive conditionnelle (<code>#ifdef</code>, <code>#ifndef</code> ou <code>#if</code>) et la fin du bloc signalée par la directive <code>#endif</code> n'est compilée que si la condition est remplie.
 
* La directive ''<code>#ifndef''ifdef</code> permet d'inclurede uncompiler toute une boutsérie de lignes du programme si une variable de compilation n'esta '''pas'''précédemment été définie. C'est(par doncla l'inversedirective de ''<code>#ifdef''define</code>). La directive <code>#endif</code> indique la fin de la partie àde inclurecode estconditonelle. déterminéeLa égalementpartie pardu programme compilée sera toute la partie comprise entre le <code>#ifdef</code> et le prochain <code>#endif</code>.
 
* Chacune de ces conditions peut être accompagné d'un #else qui permet d'inclure un bout de programme si la condition n'est pas vérifiée.
* La directive <code>#ifndef</code> permet de compiler un bout de programme si une variable de compilation n'est '''pas''' définie. C'est donc l'inverse de <code>#ifdef</code>. La fin de la partie à inclure est déterminée également par #endif.
* Il ne faut pas abuser de ces directives et elles sont surtout utilisées :
 
** pour gérer des problèmes de portabilité.
* Chacune de ces conditions peut être accompagné d'unune directive <code>#else</code> qui permet d'inclure un bout de programme si la condition n'est pas vérifiée.
** au début des fichiers headers.
 
** dans les fichiers headers de DLL sous Windows.
* Il ne faut pas abuser de ces directives et elles sont surtout utilisées :
** pour gérer des problèmes de portabilité.
* au début des fichiers d'en-tête pour éviter une double compilation.
** dans les fichiers headersd'en-tête de DLL sous Windows.
 
====Exemples====