Les directives du compilateur


Syntax
CompilerIf  <expression constante>
  ...
[CompilerElseIf]
  ...
[CompilerElse]
  ...
CompilerEndIf
Description
Si <expression constante> est vrai alors 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 en fonctions de chaque système d'exploitation.

Exemple

  CompilerIf #PB_Compiler_OS = #PB_OS_Linux
    ; code spécifique Linux..
  CompilerElseIf #PB_Compiler_OS = #PB_OS_Windows
    ; code spécifique pour Windows
  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 de construire des programmes multi-plateformes en personnalisant des parties du code source en fonctions de chaque système d'exploitation.
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_MacOS
      ; du code spécifique à Mac OS X
    CompilerCase #PB_OS_Linux
      ; du code spécifique à Linux
  CompilerEndSelect

Syntax
CompilerError <message>
CompilerWarning <message>
Description
Génère une erreur ou un avertissement du compilateur, 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.
Note: CompilerWarning affiche des avertissements" et le processus de compilation se poursuit, alors que la commande CompilerError arrête le processus de compilation.

Exemple: Génère une erreur

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

Exemple: Génère un avertissement

  CompilerIf #PB_Compiler_OS = #PB_OS_Linux
    CompilerWarning "Linux n'est pas supporté, désolé."
  CompilerElse
    CompilerWarning "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_MacOS   : Le compilateur est exécuté sur Mac OS X

  #PB_Compiler_Processor : Détermine le type de processeur pour lequel le programme est créé. Il peut s'agir de l'un des éléments suivants:
    #PB_Processor_x86     : Architecture de processeur x86 (aussi appelé IA-32 ou x86-32)
    #PB_Processor_x64     : Architecture de processeur x86-64 (aussi appelé x64, AMD64 ou Intel64)
    #PB_Processor_arm32   : Architecture de processeur  arm32
    #PB_Processor_arm64   : Architecture de processeur arm64 (appelé M1 sur les ordinateurs Apple)

  #PB_Compiler_Backend : Détermine quel type de compilateur est actuellement utilisé. Il peut s'agir de l'un des éléments suivants :
    #PB_Backend_Asm    : Le compilateur assembleur génére le code.
    #PB_Backend_C      : Le compilateur C génére le code.
   
  #PB_Compiler_ExecutableFormat : Détermine le format de l'exécutable. Il peut être l'un des suivants:
    #PB_Compiler_Executable : Exécutable standard
    #PB_Compiler_Console    : Exécutable console (Uniquement sur Windows, les autres OS utiliseront le format exécutable standard)
    #PB_Compiler_DLL        : DLL (dynlib sur MacOS X et objet partagé sur Linux)

    
  #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_Module   : Nom du module courant, si la ligne est à l'intérieur d'un module.
  #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.
  #PB_Compiler_LineNumbering : Egal à 1 si l'exécutable est compilé avec l'option 'Activer le numéro de ligne pour OnError', égal à 0 sinon.
  #PB_Compiler_InlineAssembly: Egal à 1 si l'exécutable est compilé avec l'option 'Activer l'assembleur en ligne', égal à 0 sinon.
  #PB_Compiler_EnableExplicit: Egal à 1 si l'exécutable est compilé en mode 'explicit', égal à 0 sinon.
  #PB_Compiler_IsMainFile    : Egal à 1 si l'exécutable en cours de compilation est le fichier principal, égal à 0 sinon.
  #PB_Compiler_IsIncludeFile : Egal à 1 si l'exécutable en cours de compilation a été inclus par un autre fichier, égal à 0 sinon.
  #PB_Compiler_32Bit    : Mis à 1 si le compilateur génère du code 32 bits, mis à 0 sinon.
  #PB_Compiler_64Bit    : Mis à 1 si le compilateur génère du code 64 bits, mis à 0 sinon.
  #PB_Compiler_Optimizer: Mis à 1 si le compilateur génère du code optimisé, mis à 0 sinon.
  #PB_Compiler_DPIAware : Mis à 1 si le compilateur génère un exécutable compatible DPI, mis à 0 sinon.
  

Exemple

Compiler_FileSystem_and_System_Datas.pb