Directives de compilation Object Pascal

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Liste des directives de compilation Object Pascal - Index

Chaque directive de compilation Object Pascal est classée dans l'une des catégories suivantes :

Une directive de compilation est un commentaire avec une syntaxe spéciale. La directive de compilation commence par un $ (signe dollar) en premier caractère après le délimiteur de commentaire ouvrant, suivi immédiatement d'un nom (d'une ou de plusieurs lettres) désignant la directive particulière. Vous pouvez inclure des commentaires après la directive et les paramètres nécessaires.

Les directives de compilation peuvent être placées partout où les commentaires sont autorisés. Notez que les commentaires commençant par la double barre oblique // ne peuvent pas être utilisés pour les directives de compilation. Par exemple :

{$hints off}        // a Object Pascal compiler directive
(*$hints off*)      // a Object Pascal compiler directive
//$hints off        // just a commentary, ignored

Toutes les directives, à l'exception des directives de commutation, doivent comporter au moins un espace entre le nom de la directive et les paramètres.

Les trois types de directives sont décrits dans les paragraphes suivants.

Directives de commutation

Les directives de commutation activent ou désactivent des fonctionnalités particulières du compilateur. Vous pouvez spécifier la directive en utilisant son équivalent à lettre unique ou son nom long :

  • Pour la version à lettre unique, ajoutez + ou - immédiatement après la lettre de la directive. Par exemple : {$A+}
  • Pour la version longue, fournissez le mot "on" ou "off". Par exemple : {$ALIGN ON}

Les directives de commutation sont globales ou locales :

  • Les directives globales affectent la compilation entière, et doivent apparaître avant la partie déclaration de l'unité ou du programme compilé.
  • Les directives locales affectent seulement la partie de la compilation qui s'étend de la directive jusqu'à l'occurrence suivante de la même directive. Elles peuvent apparaître n'importe où.

Les directives de commutation peuvent être groupées dans un commentaire de directive de compilation unique, en les séparant par des virgules sans espaces intermédiaires. Par exemple :

{$B+,R-,S-}

Ce groupement ne fonctionne pas pour les directives à nom long, qui doivent être entrées individuellement. Par exemple :

{$optimization on,hints off}        // everything starting with "," is treated like a comment here

Directives de paramètres

Les directives de paramètres spécifient les paramètres qui affectent la compilation, tels que les noms de fichiers ou les tailles mémoire.

Directives conditionnelles

Avec les directives conditionnelles, les sections de code sont compilées ou supprimées selon des conditions spécifiées, telles que des symboles conditionnels définis par l'utilisateur.

Exemples

Voici quelques exemples de directives de compilation :

{$B+}
{$R- Turn off range checking}
{$I TYPES.INC}
{$M 32768,40960}
{$DEFINE Debug}
{$IFDEF Debug}
{$ENDIF}

Diverses façons d'entrer des directives de compilation

Remarque : Les directives incorporées dans le code source ont priorité sur les directives spécifiées sur la ligne de commande ou dans Projet > Options > Compilateur Object Pascal > Compilation.

Dans le code source

Vous pouvez insérer des directives de compilation directement dans votre code source.

Voici un exemple de compilation conditionnelle dans le fichier Math.pas (dans votre répertoire produit\source) :


 procedure DivMod(Dividend: Cardinal; Divisor: Word;
   var Result, Remainder: Word);
 {$IFDEF PUREPASCAL}
 begin
   Result := Dividend div Divisor;
   Remainder := Dividend mod Divisor;
 end;
 {$ELSE !PUREPASCAL}
 {$IFDEF X86ASM}
 asm // StackAlignSafe
         PUSH    EBX
         MOV     EBX,EDX
         MOV     EDX,EAX
         SHR     EDX,16
         DIV     BX
         MOV     EBX,Remainder
         MOV     [ECX],AX
         MOV     [EBX],DX
         POP     EBX
 end;
 {$ENDIF X86ASM}
 {$ENDIF !PUREPASCAL}

Utilisation des commutateurs de ligne de commande

Vous pouvez aussi changer les directives par défaut en utilisant le commutateur -$directive avec le compilateur en ligne de commande, dcc32, et pour l'EDI, bds.exe.

Lors de l'utilisation du compilateur en ligne de commande, vous pouvez spécifier les directives de compilation sur la ligne de commande ; par exemple,

DCC32 -$R+ MYPROG

Utilisation de l'EDI

Vous pouvez définir la plupart des directives de compilation sur la boîte de dialogue Projet > Options > Compilateur Object Pascal > Compilation. Toutes les modifications apportées aux paramètres de la page Compilation affectent toutes les unités chaque fois que leur code source est recompilé dans les compilations ultérieures de ce projet. Si vous changez un commutateur de compilation puis compilez, toutes les unités pour lesquelles vous avez du code source sont recompilées avec les nouveaux paramètres.

Si vous travaillez dans l'éditeur de code, et souhaitez voir rapidement les directives de compilation en vigueur, appuyez sur Ctrl+O+O. Les paramètres des directives en cours sont insérés dans une ligne horizontale au début de votre fichier, avec les autres paramètres en cours, tels que les avertissements du compilateur (les paramètres de la directive $WARN). Ces listes sont ajoutées au début de votre fichier source, sauf si vous effectuez une opération annuler (Ctrl+Z) ou supprimez manuellement la liste :

Directives.png

Voir aussi