Compiler Direktiven


Syntax
CompilerIf <Konstanten Ausdruck>
  ...
[CompilerElse]
  ...
CompilerEndIf
Beschreibung
Wenn das Ergebnis des <Konstanten Ausdrucks> wahr ergibt, wird der Programmcode innerhalb des 'If' Abschnitts kompiliert, andernfalls wird er total ignoriert. Dies ist nützlich beim Erstellen von Multi-OS (auf mehreren Betriebssystemen lauffähigen) Programmen, um einige Programmabschnitte mit OS-spezifischen Funktionen individuell zu gestalten.

Die And and Or Schlüsselwörter können im <Konstanten Ausdruck> verwendet werden, um mehrere Bedingungen zu kombinieren.

Beispiel:

  CompilerIf #PB_Compiler_OS = #PB_OS_Linux And #PB_Compiler_Processor = #PB_Processor_x86
    ; etwas Linux und x86 spezifischer Programmcode..
  CompilerEndIf

Syntax
CompilerSelect <numerischer Wert>
  CompilerCase <numerischer Wert>
    ...
  [CompilerDefault]
    ...
CompilerEndSelect
Beschreibung
Arbeitet wie das reguläre Select : EndSelect, außer dass nur ein numerischer Wert pro Bedingung erlaubt ist. Es teilt dem Compiler mit, welcher Programmcode kompiliert werden soll. Dies ist nützlich beim Erstellen von Multi-OS (auf mehreren Betriebssystemen lauffähigen) Programmen, um einige Programmabschnitte mit OS-spezifischen Funktionen individuell zu gestalten.

Beispiel:

  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_AmigaOS
      ; etwas Amiga spezifischer Programmcode
    CompilerCase #PB_OS_Linux
      ; etwas Linux spezifischer Programmcode
  CompilerEndSelect

Syntax
CompilerError <String Konstante>
Beschreibung
Generiert einen Fehler, so wie wenn es ein Syntax-Error wäre und zeigt die zugehörige Nachricht an. Dies kann nützlich beim Bearbeiten spezieller Routinen sein oder um zum informieren, dass ein Quellcode auf einem bestimmten OS nicht verfügbar ist.

Beispiel:

  CompilerIf #PB_Compiler_OS = #PB_OS_AmigaOS
    CompilerError "AmigaOS wird nicht unterstützt, sorry."
  CompilerElse
    CompilerError "OS wird unterstützt, Sie können mich nun (aus)kommentieren."
  CompilerEndIf


Syntax
EnableExplicit
DisableExplicit
Beschreibung
Aktiviert (EnableExplicit) oder deaktiviert (DisableExplicit) den Explizit-Modus. Wenn aktiviert, werden alle nicht ausdrücklich mittels Define, Global, Protected oder Static deklarierten Variablen nicht akzeptiert und der Compiler wird eine Fehlermeldung ausgeben. Dies kann helfen, Schreibfehler bei der Verwendung von Variablen auszumerzen.

Beispiel:

  EnableExplicit
  
  Define a
  
  a = 20 ; Ok, da mittels 'Define' deklariert
  b = 10 ; Hier wird ein Fehler ausgegeben

Syntax
EnableASM
DisableASM
Beschreibung
Aktiviert (EnableASM) oder deaktiviert (DisableASM) den Inline-Assembler. Wenn aktiviert, dann sind alle Assembler-Schlüsselwörter direkt im Quellcode verfügbar, siehe das Kapitel Inline Assembler für weitere Informationen.

Beispiel:

  ; x86 Assembler Beispiel
  ;
  Test = 10
  
  EnableASM
    MOV dword [v_Test],20
  DisableASM
  
  Debug Test ; wird 20 ergeben


Reservierte Konstanten

Der PureBasic Compiler besitzt einige reservierte Konstanten, welche für den Programmierer nützlich sein können:
  #PB_Compiler_OS : Mit dieser Konstante kann bestimmt werden, auf welchem OS der Compiler
                    gerade läuft (nützlich für die Erstellung von Cross-Plattform Applikationen).
                    Dies kann eine der folgenden Konstanten sein: 
    - #PB_OS_Windows : Der Compiler läuft unter Windows.
    - #PB_OS_Linux   : Der Compiler läuft unter Linux.
    - #PB_OS_AmigaOS : Der Compiler läuft unter AmigaOS.
    - #PB_OS_MacOS   : Der Compiler läuft unter Mac OS X.

  #PB_Compiler_Processor : Mit dieser Konstante kann bestimmt werden, für welchen Prozessor-Typ
                    das Programm kompiliert wird. Dies kann eine der folgenden Konstanten sein:
    - #PB_Processor_x86     : x86 Prozessor-Architektur (auch IA-32 oder x86-32 genannt)
    - #PB_Processor_x64     : x86-64 Prozessor-Architektur (auch x64, AMD64 oder Intel64 genannt)
    - #PB_Processor_PowerPC : PowerPC Prozessor-Architektur 
    - #PB_Processor_mc68000 : Motorola 68000 Prozessor-Architektur

  #PB_Compiler_Date     : Aktuelles Datum zum Zeitpunkt des Kompilierens, im PureBasic Datums-Format.
  #PB_Compiler_File     : Voller Pfad und Name der kompilierten Datei, nützlich für Debug-Zwecke.
  #PB_Compiler_FilePath : Voller Pfad der kompilierten Datei, nützlich für Debug-Zwecke.
  #PB_Compiler_Line     : Zeilennummer der kompilierten Datei, nützlich für Debug-Zwecke.
  #PB_Compiler_Procedure: Aktueller Prozedur-Name, wenn sich die Zeile innerhalb einer Prozedur befindet.
  #PB_Compiler_Version  : Compiler-Version, im Ganzzahl-Format in der Form '420' für 4.20.
  #PB_Compiler_Home     : Vollständiger Pfad des PureBasic-Verzeichnisses, kann nützlich zum Auffinden
                          von Include-Dateien sein.
  #PB_Compiler_Debugger : Auf 1 gesetzt, wenn der Laufzeit-Debugger eingeschalten ist, andernfalls 0. 
                          Wenn ein Executable erstellt wird, ist der Debugger immer ausgeschalten (diese Konstante wird dann 0 sein).
  #PB_Compiler_Thread   : Auf 1 gesetzt, wenn das Executable im threadsicheren Modus kompiliert wird, andernfalls 0.
  #PB_Compiler_Unicode  : Auf 1 gesetzt, wenn das Executable im Unicode-Modus kompiliert wird, andernfalls 0.