Compilation conditionnelle
La compilation conditionnelle est utilisée pour créer différentes versions d'un programme.
Dans Pure Pascal, la compilation conditionnelle est contrôlée par des symboles dits conditionnels, qui peuvent être définis et interrogés. De plus, l'état du commutateurs du compilateur peut être interrogé.
Les symboles conditionnels ressemblent à des variables booléennes: ils peuvent être vrais (définis) ou faux (non définis). Les noms des symboles conditionnels correspondent aux règles habituelles des identifiants en Pascal. Sinon, les identificateurs Pascal et les symboles conditionnels sont complètement séparés.
Deux directives permettent de définir et de supprimer des symboles conditionnels:
{$DEFINE Symbol } Définit le symbole (aucun effet s'il est déjà défini). {$UNDEF Symbol } Supprimer le symbole. (Aucun effet si déjà supprimé).Les directives suivantes sont utilisées pour interroger les symboles conditionnels:
{$IFDEF Symbol } Ne compilez le code source suivant que si le symbole est défini. {$IFNDEF Symbol } Compilez le code source suivant uniquement si le symbole n'est pas défini.La requête des commutateurs du compilateur est rendue possible par la directive $IFOPT. Il est suivi du nom d'un commutateur de compilateur et de + ou -.
Exemple:
{$IFOPT N+ } Compilez le code source suivant uniquement si le commutateur $N est actif.La directive $ELSE compile le code source suivant si le code source n'a pas été compilé après la directive $IFDEF, $IFNDEF ou $IFOPT associée, et vice versa.
La directive $ENDIF termine une compilation conditionnelle.
Exemples:
{$IFOPT N+} type real = extended; (* Ensuite, le programme s'exécute plus rapidement sous N+ *) {$ENDIF} {$IFDEF Debug} Writeln('Problème de contrôle: nous serions arrivés ici heureux'); {$ENDIF}Notez que les symboles de condition peuvent également être définis à partir de l'environnement de développement intégré (dans Options/Compiler/Conditional defines)), et qu'ils peuvent être donnés au compilateur de ligne de commande PPC.TTP sur la ligne de commande.