MCO 305 Projektierungshandbuch
__ Programmieren mit APOSS __
#define, #undef
Einfache Zeichenfolgen (Strings) werden mit folgender Anweisung ersetzt:
#define name string
Alle Vorkommen von „ name", die der Anweisung folgen, werden durch „ string" ersetzt.
Beachten Sie, dass „ string " alle Zeichen (einschließlich der Leerzeichen) bis zum Ende der Zeile ersetzt. Falls
notwendig kann die Zeile durch „\" für die Folgezeilen fortgesetzt werden.
Definitionen können mit folgender Anweisung wieder gelöscht werden:
#undef name
Die folgenden Namen sind vordefiniert:
__DATE__ - Datum, wann das Programm kompiliert wurde (als Zeichenfolge).
__TIME__ - Uhrzeit, wann das Programm kompiliert wurde (als Zeichenfolge).
__FILE__ - Dateiname des Programms (als Zeichenfolge).
__LINE__ - Aktuelle Zeilennummer im Programm (als Nummer).
Beispiel:
#define ARRAY_LEN 100
#define PRINT_MSG print " apos = ",apos," avel = ",avel
DIM prm[ARRAY_LEN]
PRINT_MSG
PRINT "Dies ist Zeile ",__LINE__
Ist das gleiche wie:
DIM prm[100]
PRINT " apos = ",apos," avel = ",avel
PRINT " Dies ist Zeile ",5
String-Ersetzungen werden rekursiv durchgeführt. Sobald der Originalstring ersetzt wurde, prüft der Prepro-
zessor nach anderen Ersetzungen innerhalb des neuen Strings. Beachten Sie, dass String-Ersetzungen nicht
innerhalb der #define Anweisung selbst und nicht bei Strings innerhalb von Anführungszeichen durchge-
führt werden.
Beispiel:
#define wert 10
#define PRINT_MSG print "Wert = ",Wert
PRINT_MSG
#define wert 20
PRINT_MSG
ist das gleiche wie:
PRINT "Wert = ",10
PRINT "Wert = ",20
Define-Anweisungen können auch ein oder mehrere Argumente, getrennt durch Komma, enthalten:
#define name(arg1 , arg2) string
In diesem Fall werden die Vorkommen von „ arg " durch „ string " ersetzt.
Beispiel:
#define SQUARE(x) ((x)*(x))
#define SUM_SQUARE(x,y) (SQUARE(x) + SQUARE(y))
i = SUM_SQUARE(3,4)
i = SUM_SQUARE(a,b)
179
®
MG.33.L5.03 – VLT
ist ein eingetragenes Warenzeichen von Danfoss.