Les directives du compilateur


Syntax
CompilerIf  <expression constante>
  ...
[CompilerElse]
  ...
CompilerEndIf
Description
Si le résultat <expression constante> est vrai, le code inclus dans la structure 'If' sera compilé, sinon il sera totalement ignoré. Cette directive permet de construire des programmes multi-plateformes en personnalisant des parties du code source avec des fonctions spécifiques pour chaque système d'exploitation.

Exemple:

  CompilerIf #PB_Compiler_OS = #PB_OS_Linux
    ; code spécifique Linux..
  CompilerEndIf

Syntax
CompilerSelect <constante numérique>
  CompilerCase <constante numérique>
    ...
  [CompilerElse]
    ...
  [CompilerDefault]
    ...
CompilerEndSelect
Description
Fonctionne comme un Select : EndSelect classique en opérant une compilation conditionnelle. Cette directive permet par exemple de construire des programmes multi-plateformes en personnalisant des parties du code source avec des fonctions spécifiques pour chaque système d'exploitation.

Exemple:

  CompilerSelect #OS
    CompilerCase #AmigaOS
      ; code spécifique Amiga
    CompilerCase #Linux
      ; code spécifique Linux
  CompilerEndSelect

Syntax
CompilerError <message>
Description
Génère une erreur, comme si c'était une erreur de syntaxe et affiche le message spécifié. Ceci peut être utile pour faire des routines spécifiques et indiquer qu'elles ne sont pas disponibles pour un OS particulier.

Exemple:

  CompilerIf #PB_Compiler_OS = #PB_OS_AmigaOS
    CompilerError "AmigaOS n'est pas supporté, désolé."
  CompilerElse
    CompilerError "OS Supporté, vous pouvez me mettre en commentaire."
  CompilerEndIf


Syntax
EnableExplicit
DisableExplicit
Description
Active ou désactive le mode explicite. Quand il est actif, toutes les variables qui ne sont pas explicitement déclarées avec Define, Global, Protected ou Static ne seront pas acceptées par le compilateur et génèreront une erreur. Cela peut aider à éviter les erreurs de frappe.

Exemple:

  EnableExplicit
  
  Define a
  
  a = 20 ; Ok, car déclaré avec 'Define'
  b = 10 ; Erreur

Syntax
EnableASM
DisableASM
Description
Active ou désactive l'assembleur en ligne. Quand il est actif, toutes les commandes assembleur sont incluses directement dans le code source, pour plus d'informations référez vous à la page L'assembleur en ligne.

Exemple:

  ; Exemple assembleur x86
  ;
  Test = 10
  
  EnableASM
    MOV dword [v_Test],20
  DisableASM
  
  Debug Test ; Affichera 20


Constantes prédéfinies

Le compilateur PureBasic déclare automatiquement plusieurs constantes avant chaque compilation pour donner plus d'informations sur l'environnement de développement:
    - #PB_Compiler_OS: Permet de savoir sur quelle plateforme est exécuté le compilateur
    - #PB_OS_Windows : Le compilateur est exécuté sur Windows
    - #PB_OS_Linux   : Le compilateur est exécuté sur Linux
    - #PB_OS_AmigaOS : Le compilateur est exécuté sur AmigaOS
    - #PB_OS_MacOS  : Le compilateur est exécuté sur Mac OS X
    
  #PB_Compiler_Date     : La date actuelle, au moment de la compilation, au format date PureBasic.
  #PB_Compiler_File     : Chemin complet et nom du fichier en cours de compilation, utile pour debogguer.
  #PB_Compiler_FilePath : Chemin complet du fichier en cours de compilation, utile pour debogguer.
  #PB_Compiler_Line     : Numéro de la ligne du fichier en cours de compilation, utile pour debogguer.
  #PB_Compiler_Procedure: Nom de la procédure actuelle, si la ligne est à l'intérieur d'une procédure.  
  #PB_Compiler_Version  : Version du compilateur, nombre entier sous la forme '420' pour la version 4.20.
  #PB_Compiler_Home     : Chemin complet du répertoire PureBasic, utile pour localiser des fichiers inclus
  #PB_Compiler_Debugger : Egal à 1 si le débogueur est activé, égal 0 sinon. Quand un exécutable est
                          créé, le débogueur est toujours désactivé (cette constante sera égale à 0).
  #PB_Compiler_Thread   : Egal à 1 si l'exécutable est compilé en mode 'multi-threadé', égal à 0 sinon.
  #PB_Compiler_Unicode  : Egal à 1 si l'exécutable est compilé en mode unicode, égal à 0 sinon.