Skip to main content

Qu'est-ce que la compilation conditionnelle?

Dans la programmation informatique, la compilation conditionnelle décrit la capacité d'un compilateur logiciel ou d'un processeur de code source pour inclure ou ignorer certaines commandes ou blocs de code basés sur des instructions spécifiques à la langue qui ne font pas techniquement partie de la spécification de langage de programmation principale.Les commandes qui sont utilisées pour déclencher la compilation conditionnelle dans un programme sont souvent appelées directives de pré-processeur, bien qu'elles puissent également être appelées directives de compilateur, commentaires conditionnels ou définies conditionnelles.Selon le compilateur ou le langage utilisé, les directives conditionnelles peuvent être des variables ou des macros définies par l'utilisateur, ou elles 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ée pour configurer un seul ensemble de fichiers de code source afin qu'ils puissent être compilés dans différents environnements ou systèmes d'exploitation sans avoir à échanger ou à modifier les fichiers source.

La définition conditionnelle utilisée pour tester la compilation conditionnelle peut varier deUne langue à une autre, mais ce sont généralement des macros ou d'autres expressions de méta-données en dehors de la portée des variables de programme normales.Dans les langues telles que C, les variables sont généralement des macros lues par un pré-processeur.La plupart du temps, les macros ne sont pas accessibles par le code source du programme exécutable réel, même s'ils existent dans les mêmes fichiers source.

Les directives qui sont utilisées pour tester les variables conditionnelles définies sont rudimentaires et suivent la même logique qu'un si-Cente déclaration.Les tests de base qui peuvent être effectués pour la compilation conditionnelle sont de savoir si une valeur est définie, non définie ou, dans certains cas, si deux variables définies sont équivalentes.Les variables ou les macros elles-mêmes ne détiennent généralement aucune valeur de signification, car l'acte de les définir est ce que les directives vérifient.Avec certaines langues et compilateurs, cependant, la valeur d'une variable définie peut avoir une importance si elles sont évaluées pour l'état booléen.

Lorsqu'un compilateur rencontre des directives utilisées pour la compilation conditionnelle, les directives sont évaluées pour voir si elles testent comme vrai ou fausse.Si c'est vrai, le code qui suit la directive est compilé comme normal;Sinon, le compilateur ignorera complètement le code contenu dans la directive.Cela est différent des instructions de logique conditionnelle dans le code du programme exécutable lui-même car, même si la logique a 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 pré-processeurs conditionnelles, le code ignoré n'est jamais inclus, interprété ou compilé.Il convient également de noter qu'une fois que le pré-processeur a évalué toutes les variables et directives conditionnelles, ils ne sont pas compilés avec le reste du programme, car ils sont destinés à fournir une direction au compilateur.

La compilation conditionnelle est le plus souventutilisé pour inclure ou exclure le code spécifique à un système d'exploitation ou un environnement particulier.Cela signifie que les bibliothèques qui existent dans un système d'exploitation peuvent être incluses conditionnellement si les directives déterminent que le programme est compilé dans le cadre de ce système d'exploitation.Alternativement, les directives peuvent également être utilisées pour inclure ou exclure le code en fonction des variables définies par l'utilisateur.Cela peut être fait afin que le code de débogage ou de profilage ne soit pas inclus dans la version finale d'un programme, ou donc certaines fonctionnalités peuvent être activées ou désactivées sans avoir à maintenir des copies distinctes du code.