#Define

Mit #Define können Befehle, Befehlskombinationen oder Ausdrücke im Sinne eines Alias mit einem Bezeichner verknüpft werden. Der Bezeichner kann dann wiederum im Sourcecode so genutzt werden, als würde es sich um den zugewiesenen Ausdruck handeln. Anstelle des Platzhalter setzt der Compiler die dem Namen zugewiesenen Ausdruck während des Kompiliervorgangs automatisch ein.

#Define dient der besseren Lesbarkeit und Anpassungsmöglichkeit von Programmen oder Programmteilen. Sollen zum Beispiel zu einem späteren Zeitpunkt zugewiesene Ports für ein anderes Projekt geändert werden, müssen nur die Ports der Defines geändert werden und nicht der gesamte Quelltext. Auch können wiederkehrende Ausdrücke als kürzere Makrofunktion eine nachträgliche Änderung erleichtern und die Lesbarkeit verbessern.

Define-Funktionen

Es können zusätzlich auch sog. Define-Funktionen erstellt werden. D.h. es kann ein virtueller Funktionsname anstatt eines Ausdrucks verwendet werden. Die Parameter werden dann durch Textersetzung in Ausdruck rechts eingesetzt. Siehe hierzu Beispiel 2 und 3.

Hinweise
  • Defines sind immer global, wirken sich also auf den gesamten Quelltext aus!
  • Bereits erstellte Defines können wie Konstanten erneut Definiert werden. Die alte Definition wird dabei durch die Neue ersetzt.

Syntax

Beispiel 1

#define Taster as Portb.4
 
Taster.mode = Output, pulldown

Beispiel 2

#define BV(n) as (1 << (n))
 
a and= BV(3)  'wird zu a and= (1 << (3))

Beispiel 3

#define myfunc(a,b) as ((a + b) * a)
 
dim var1,var2,result as byte
 
result = myfunc(var1,var2)  '"myfunc(var1,var2)" wird zu ((var1 + var2) * var1)