Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - DEFINE (Meta)

Referenz-Navigation

 

Syntax A: #DEFINE Symbol [ Ausdruck ]
Syntax B: #DEFINE Symbol ( Parameter [, Parameter] [...] ) Makro
Typ: Metabefehl
Kategorie: Metabefehle

#DEFINE definiert ein Symbol mit benutzerdefinierter Bedeutung oder ein Makro.

Ein Makro ist im Grunde eine BefehlsreferenzeintragFUNCTION; direkt vor der Compilation wird der Makro-Bezeichner durch seinen Ausdruck ersetzt. Dabei können in diesem Ausdruck Parameter verwendet werden, die zuvor unter 'Parameter' festgelegt wurden. Makros werden meist für häufig auftretende mathematische Formeln verwendet.

Durch einfaches Definieren eines Symbols kann das Programm komplett anders laufen. Diese Funktion ermöglicht FreeBASIC u. a., ein Programm portabel zu verschiedenen Betriebssystemen zu halten, indem z. B. bestimmte Codeabschnitte nur unter Windows und andere nur unter Linux eingebunden werden. Einige Symbole und Makros sind bereits vordefiniert; siehe BefehlsreferenzeintragPräprozessoren.

Makros können auch als Parameter für andere Makros übergeben werden. In diesem Fall müssen auch dann Klammern für die Parameterliste angegeben werden, wenn es sich um ein parameterloses Makro handelt.

Beispiel 1:
Makros erstellen, die zwischen Altgrad DEG, Kreis mit 360°), Neugrad (GON, Kreis mit 400gon) und Bogenmaß (RAD, Kreis mit 2 PI) umrechnen

#DEFINE PI (4 * ATN(1))
#DEFINE deg2rad(deg) ( (deg / 180) * PI)
#DEFINE rad2deg(rad) ( (rad / PI) * 180 )
#DEFINE gon2rad(gon) ( (gon / 200) * PI)
#DEFINE rad2gon(rad) ( (rad / PI) * 200 )

PRINT "PI ="; PI
' Ausgabe: 3.141592654
PRINT "180 im Bogenmaß: " & deg2rad(180)
' Ausgabe: 3.141592654
PRINT "3.141592654 in Altgrad°(DEG): " & rad2deg(pi)
' Ausgabe: 180
PRINT "200gon im Bogenmaß: " & gon2rad(200)
' Ausgabe: 3.141592654
PRINT "3.141592654 in Neugrad(GON): " & rad2gon(pi)
' Ausgabe: 200
SLEEP

Beispiel 2 mit variabler Anzahl von Parametern:

#include "crt.bi"
#define eprintf(Format, args...) fprintf(stderr, Format, args)
eprintf(!"Hello from printf: %i %s %i\n", 5, "test", 123)

#define car(a, b...) a
#define cdr(a, b...) b
PRINT "car (1, 2, 3, 4) = "; car(1, 2, 3, 4)
PRINT "cdr (1, 2, 3, 4) = "; cdr(1, 2, 3, 4)
SLEEP

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC:

Siehe auch:
BefehlsreferenzeintragDEFINED, BefehlsreferenzeintragUNDEF (Meta), BefehlsreferenzeintragMACRO (Meta), BefehlsreferenzeintragIF (Meta), BefehlsreferenzeintragIFDEF (Meta), BefehlsreferenzeintragIFNDEF (Meta), BefehlsreferenzeintragPräprozessoren, BefehlsreferenzeintragPräprozessor-Anweisungen


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 17.07.2007 von RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 19.01.2013 von Redakteurnemored gespeichert.
  Versionen Versionen