FreeBasic: Präprozessoren
Präprozessor Befehle
BearbeitenDer Präprozessor liest vor dem kompilieren den Quelltext und ändert ihn um. Wie er ändert meinen Quelltext? Nein, oder eigentlich schon aber nur das was du ihm vorher sagst. Ein Beispiel:
#IFDEF __FB_WIN32__
Windows Variante deines Quelltexts.
#ENDIF
#IFDEF __FB_DOS__
Variante ohne die Funktionen die es auf DOS nicht gibt.
#ENDIF
Einfach oder? Wenn der Quelltext kompiliert wird, wurde vorher der Teil gelöscht der für DOS zuständig ist, oder auf DOS der Teil der für Windows zuständig ist. Praktisch oder? Unten steht eine Tabelle mit allen Konstanten. Du kannst auch folgendes schreiben:
#IF __FB_VERSION__ = "0.20"
Code der erst ab dieser Version möglich ist.
#ELSE
Ansonsten dieser Code
#ENDIF
Das Funktioniert gleich wie If nur das der Codeteil dessen Bedingung nicht erfüllt ist einfach weggelassen wird. Mit #ERROR kannst du das kompilieren abbrechen und einen von dir gewählten Fehlertext ausgeben. Ausserdem gibt es noch #lang mit dem die Sprache eingestellt wird. Möglich sind "fb" für FreeBasic, "deprecated" für FreeBasic Programm für Version 0.16 oder früher und "qb" für QuickBasic Programme.
Vordefinierte Symbole
BearbeitenSymbolbezeichner | Wert/Bedeutung |
__FB_WIN32__ | Ohne Wert; ist nur definiert, wenn unter Windows kompiliert wird. |
__FB_DOS__ | Ohne Wert; ist nur definiert, wenn unter DOS kompiliert wird. |
__FB_LINUX__ | Ohne Wert; ist nur definiert, wenn unter Linux kompiliert wird. |
__FB_MAIN__ | Ohne Wert; dieses Symbol wird definiert, sobald die #DEFINE-Symbole und Makros des Hauptmoduls überstetzt werden. |
__FB_SIGNATURE__ | Ein String, der die Signatur des Compilers enthält. |
__FB_VERSION__ | Version des Compiler z.B.: 0.15 |
__FB_VER_MAJOR__ | Versionsnummer des Compiler, z.B.: 0 |
__FB_VER_MINOR__ | Minor Nummer des Compiler, z.B.: 15 |
__FB_VER_PATCH__ | Patch Verion des Compiler, z.B.: 0 |
__FB_MIN_VERSION__(major, minor, patch) | Dieses Makro vergleicht die Version des verwendeten Compilers mit den angegebenen Daten.
__FB_MIN_VERSION__ ist folgendermaßen definiert: #DEFINE __FB_MIN_VERSION__(major, minor, patch_level) _ ((__FB_VER_MAJOR__ > major) OR _ ((__FB_VER_MAJOR__ = major) AND ((__FB_VER_MINOR__ > minor) OR _ ( __FB_VER_MINOR__ = minor AND __FB_VER_PATCH__ >= patch_level)))) |
__DATE__ | Ist mit dem aktuellen Datum definiert, z.B.: 2005/11/05 |
__TIME__ | Ist mit der aktuellen Uhrzeit definiert, z.B.: 16:05:09 |
__FILE__ | Enthält den Dateinamen der Quellcode-Datei, die gerade umgesetzt wird. |
__FUNCTION__ | Enthält den Namen der Prozedur, die gerade umgesetzt wird. |
__LINE__ | Ist immer definiert mit der Zeilennummer in dem __LINE__ steht. |