Compilation Conditionnelle

Plusieurs directives autorisant le compilation conditionnelles sont supportées.

La compilation conditionnelle utilise une notion d'étiquettes, qui sont soit définies, soit non définies. Une étiquette est une suite de caractère alphanumérique (plus le caractère '_') arbitraire, non sensible à la casse.

  • {$DEFINE etiquette} : définit étiquette.
  • {$UNDEF etiquette} : supprime étiquette des étiquettes définies.

Les étiquettes ainsi définies (ou non) peuvent ensuite être exploitées par:

  • {$IF expression} : indique le début d'un bloc conditionnel qui sera actif si expression est vrai (expression doit être une expression booléenne constante, voir aussi Defined et Declared).
  • {$IFDEF etiquette} : indique le début d'un bloc conditionnel qui sera actif si etiquette est définie.
  • {$IFNDEF etiquette} : indique le début d'un bloc conditionnel qui sera actif si etiquette n'est pas définie.
  • {$ELSE} : indique une alternative à un bloc conditionnel (doit suivre un $IFDEF ou $IFNDEF).
  • {$ENDIF} : indique la fin d'un bloc conditionnel.

Les blocs conditionnels peuvent être inclus hiérarchiquement.

Une utilisation courante est dans le cas d'inclusions ou pour rendre optionnel des blocs correspondant à du code de débogage.

// exemple d'utilisation
//

{$IFDEF MON_ETIQUETTE}
// ce code ne sera pas inclus car MON_ETIQUETTE n'est pas définie
{$ELSE}
// ce code sera inclus
{$ENDIF}

{$DEFINE MON_ETIQUETTE}

{$IFDEF MON_ETIQUETTE}
// ce code sera inclus car MON_ETIQUETTE est maintenant définie
{$ELSE}
// ce code ne sera pas inclus
{$ENDIF}