Traductions de cette page?:

Structures conditionnelles du preprocesseur

#if, #ifdef, #ifndef, #else, #elif, #endif

Il existe six commandes pour donner une logique conditionnelle au compilateur. Lorsque le compilateur parcourt le fichier, ces commandes causent l'inclusion ou la suppression de certaines lignes de code.

     #if expression

Si la valeur de expression est vraie, alors le code qui suit ceci sera compilé.

     #ifdef macro

Si la macro a été définie précédemment (à l'aide d'un #define, alors le code qui suit ceci sera compilé.

     #ifndef macro

Si la macro n'a pas été définie précédemment (à l'aide d'un #define, alors le code qui suit ceci sera compilé.

Quelques remarques :

  • La commande #elif est est juste une (horrible) abréviation pour “elseif” et fonctionne exactement comme vous le pensez.
  • Vous pouvez également ajouter un “defined” ou ”!defined” après un #if pour indiquer #ifdef ou #ifndef.

Voici un exemple d'utilisation:

     #ifdef DEBUG
       cout << "Ceci est une version de test, i=" << i << endl;
     #else
       cout << "Ceci est la version de production!" << endl;
     #endif

Vous avez peut-être remarqué que le second exemple peut simplifier énormément le débogage… comparé au retrait de millions de “cout” dans votre code. You might notice how that second example could make debugging a lot easier than inserting and removing a million “cout”s in your code.

Sujets connexes : #define