Dans la programmation informatique, la compilation conditionnelle décrit la capacité d'un compilateur du logiciel ou du processeur de code source pour inclure ou d'ignorer certaines commandes ou des blocs de code basé sur des instructions spécifiques à une langue qui ne sont pas techniquement partie de la spécification de base du langage de programmation. Les commandes qui sont utilisés pour déclencher la compilation conditionnelle dans un programme sont souvent appelées directives de pré-processeur, mais ils peuvent aussi être appelées directives de compilation, les commentaires conditionnels ou conditionnelle définit. Selon le compilateur ou la langue utilisée, les directives conditionnelles peuvent être des variables définies par l'utilisateur ou des macros, ou ils peuvent également être des variables système définies par le compilateur ou le système d'exploitation. La compilation conditionnelle est fréquemment utilisé pour configurer un seul ensemble de fichiers de code source afin qu'ils puissent être compilées dans différents environnements ou systèmes d'exploitation sans avoir à changer ou modifier les fichiers source.
Le conditionnel définit qui sont utilisés pour tester la compilation conditionnelle peut varier d'une langue à l'autre, mais ils sont généralement macros ou d'autres expressions de méta-données en dehors de la portée des variables de programme normal. Dans les langages tels que C, les variables sont généralement des macros qui sont lus par un pré-processeur. La plupart du temps, les macros ne sont pas accessibles par le programme réel du code source exécutable, même si elles existent dans les mêmes fichiers sources.
Les directives qui sont utilisés pour tester les variables conditionnelles définies sont rudimentaires et suivent la même logique que l'instruction if-then. Les tests de base qui peuvent être effectuées pour la compilation conditionnelle est de savoir si une valeur est définie, non défini ou, dans certains cas, si deux variables définies sont équivalentes. Les variables ou des macros eux-mêmes ne tiennent généralement une valeur d'importance, car le fait de les définir ce que les directives parcourez pour. Avec certains langages et compilateurs, toutefois, la valeur d'une variable définie peut importe si elles sont évaluées pour l'état booléen.
Quand un compilateur rencontre directives utilisées pour la compilation conditionnelle, les directives sont évaluées pour voir si ils testent aussi vrai ou faux. Si c'est vrai, le code qui suit la directive est compilé comme d'habitude, sinon le compilateur complètement ignorer le code contenu dans la directive. Ce n'est pas comme les déclarations de logique conditionnelle dans le code de programme exécutable lui-même parce que, même si la logique est un bloc de code qui ne peut pas être exécuté, il sera toujours interprété et compilé dans la plupart des cas. Avec les directives de pré-processeur conditionnelles, sauté-dessus de code n'est jamais compris, interprété ou compilé. Il convient également de noter que, une fois le pré-processeur a évalué toutes les variables conditionnelles et des directives, ils ne sont pas compilés avec le reste du programme, car ils ont pour seul but de fournir une orientation pour le compilateur.
La compilation conditionnelle est le plus souvent utilisé pour inclure ou exclure code qui est spécifique à un système d'exploitation ou l'environnement. Cela signifie que les bibliothèques qui existent dans un système d'exploitation peuvent être inclus sous condition si les directives déterminent le programme est compilé sous ce système d'exploitation. Alternativement, les directives peuvent également être utilisés pour inclure ou exclure code basé sur des variables définies par l'utilisateur. Cela peut être fait si le débogage ou le profilage code n'est pas inclus dans la version finale d'un programme, ou si certaines fonctions peuvent être activées ou désactivées sans avoir à conserver des copies distinctes du code.