#OVERRIDE & Präprozessor
Mit #OVERRIDE ersetzen Sie einen registrierten BASIC-Laufzeitaufruf durch einen typisierten eigenen Funktionskörper. Das macht kontrollierte Anpassungen und gezielte Instrumentierung möglich, ohne jeden Aufruf im Programm umzuschreiben.
Typisierter Ersatz im Modul
Die Definition steht auf Modulebene, beginnt mit #OVERRIDE Ziel(Parameter AS Typ) AS Rückgabetyp und endet mit #ENDOVERRIDE. Der Körper setzt bei diesem Funktionsbeispiel FUNCTION. Der Compiler prüft den registrierten Zielvertrag sowie Parameter- und Rückgabetypen. Der Quellcode enthält außerdem getrennte Regeln für registrierte Anweisungs- und Operatorziele; nicht jeder Name ist ein gültiges Ziel.
#OVERRIDE ist weder normaler Makro-Textersatz noch das Methodenschlüsselwort OVERRIDE in Klassen. Präprozessor-Direktiven wie #IF und benutzerdefinierte Symbole sind als Ziele ausgeschlossen. Es ersetzt auch keine Betriebssystemfunktion global. Die Definition gilt im übersetzten Modul und ist kein globaler Schalter für andere Programme.
Beispiel: ABS bewusst anpassen
Mit dem ausgelieferten V21-Compiler am 30.09.2026 kompiliert und ausgeführt: ABS(2) liefert hier absichtlich 42. Das ist eine bewusst geänderte Semantik, nicht das mathematische Standard-ABS. Ein separater Negativtest für #OVERRIDE #IF wurde mit Diagnose 4125 abgewiesen und erzeugte keine EXE.
Geprüften Quelltext öffnenPräprozessor: Auswahl und Wiederverwendung vor dem Übersetzen
Der separate BASIC-Präprozessor verarbeitet Dateieinbindung mit #INCLUDE, objekt- und funktionsartige #DEFINE-Makros, bedingte Zweige mit #IF / #ELSE / #ENDIF sowie wiederholte Quelltexterzeugung mit #REPEAT / #ENDREPEAT. Der Treiber bietet -E, -I, -D und -U für Präprozessorausgabe, Include-Pfade und Kommandozeilendefinitionen.
Diese Verarbeitung findet vor dem eigentlichen BASIC-Frontend statt. #OVERRIDE ersetzt dagegen einen typisierten Laufzeitaufruf; das sind unterschiedliche Werkzeuge mit unterschiedlichen Wirkungsbereichen.
Beispiel: Include, Makro, Bedingung und Wiederholung
V21: kompiliert und nativ ausgeführt. Der Zweig %INDEX = 2 setzt SELECTED auf 40; ADD(SELECTED, 2) muss 42 ergeben. Der gewählte #IF-Zweig wird geprüft, Fehler liefern 1 beziehungsweise 2.
Geprüften Quelltext öffnenweb-defines.inc
Die Include-Datei gehört zum geprüften Beispiel. Den Text als web-defines.inc neben preprocessor.pb speichern.
Belegt durch den aktuellen #OVERRIDE-Collector, die vorhandenen Vertragsfälle und die genannten kurzen V21-Prüfungen. Umfangreiche Überladungs-, Operator- und Anweisungsvarianten sind mit diesem Einzelbeispiel nicht vollständig qualifiziert.
Prüfbelege ansehenX-Code