#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 :
#elif
est est juste une (horrible) abréviation pour “elseif” et fonctionne exactement comme vous le pensez.#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