Benutzer-Werkzeuge

Webseiten-Werkzeuge


k5:k5.6:start

5.6 Gambas-Präprozessor

Betrachtet man diesen Quelltext genauer, dann entdeckt man im Quelltext Präprozessor-Direktiven, die mit einem #-Zeichen beginnen:

  #If Debug 
      If Box Then ' Rechteck zeichnen, in dem der Text stehen soll 
         Cairo.Rectangle(Box.X, Box.Y, Box.Width, Box.Height) 
         Cairo.Dash = [5] 
         Cairo.Stroke() 
      Endif 
  #Endif 

Gambas hat einen rudimentären Präprozessor. Das ist eine Einheit, die der lexikalischen Analyse – dem ersten Schritt bei der Kompilierung – vorgeschaltet ist. Was der Gambas-Präprozessor leistet, finden Sie in der Gambas-Dokumentation unter http://gambaswiki.org/wiki/lang/.if.

Eine Präprozessor-Direktive hat diese Syntax:

#If Preprocessor-Expression ... [ #Else If Preprocessor-Expression ... ] [ #Else ... ] #Endif 

Eine #IF … #EndIf-Präprozessor-Direktive erlaubt die bedingte Kompilierung von Quelltext. Ein Präprozessor-Ausdruck ist ein rudimentärer boolscher Ausdruck, der folgendes einschließen kann:

  • Eine Präprozessor-Boolean-Konstante
  • Eine Präprozessor-Konstante - verglichen mit einer Zeichenkette
  • Das OR- oder AND-Schlüsselwort
  • Klammern, um Unterausdrücke zu gruppieren


Das sind gültige Präprozessor-Konstanten:

KonstanteWertErlaubte Vergleichsoperatoren
SystemBetriebssystem =, <>
Architecture oder ArchCPU-Architektur =, <>
Version oder GambasCompiler-Version =, <>, <, ⇐, >, >=
DebugDebugging-Informationen eingeschaltet keine
TrueWert 'wahr' keine
FalseWert 'falsch' keine

Tabelle 5.6.1 : Übersicht zu den Präprozessor-Konstanten

Im u.a. Beispiel-Quelltext wird nur eine der vier 'Print'-Anweisungen kompiliert:

Public Sub Main() 
  #If System = "Linux" 
      #If Architecture = "x86_64" 
          Print "Linux 64 bits" 
      #Else 
          Print "Linux 32 bits" 
      #Endif 
  #Else If System = "FreeBSD" 
      Print "FreeBSD ?" 
  #Else 
      Print "Other !?" 
  #Endif 
End ' Main() 

Beachten Sie diesen Hinweis:

Durch die Verwendung der bedingten Kompilierung auf der Basis 'Betriebssystem' oder 'CPU-Architektur' wird bei der Kompilierung eine ausführbare Datei generiert, die spezifisch für das Betriebssystem oder die CPU-Architektur ist. Das ist in der Regel aber keine gute Idee. Versuchen Sie statt dessen, zur Laufzeit durch die Prüfung der Werte 'System.Family' und 'System.Architecture' so viel wie möglich vom Betriebssystem oder der CPU-Architektur in Ihrem Code zu erkennen.

Download

Artikel

Download

Wir verwenden Cookies, um unser Internetangebot optimal zu gestalten. Durch weitere Nutzung dieser Webseite stimmen Sie der Verwendung von Cookies zu. Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung
k5/k5.6/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge