Referenz - COMMON
Syntax A: COMMON [SHARED] Variable1[()] AS Typ [, Variable2[()] AS Typ [, ...] ]
Syntax B: COMMON [SHARED] AS Typ Variable1[()] [, Variable2[()] [, ...] ]
Typ: Anweisung
Kategorie: Bibliotheken
COMMON dimensioniert Variablen und Arrays (vgl. DIM) und macht sie mehreren Modulen zugänglich.
- 'Variable1' und 'Variable2' sind die Namen von neuen, noch nicht verwendeten Variablen oder Arrays.
- 'SHARED' bewirkt, dass die Variable auch Unterprogrammen zugänglich ist.
- 'AS Typ' gibt an, von welchem Typ die Variable sein soll. Auch FUNCTION oder SUB kann hier als Typ angegeben werden; siehe dazu DYLIBLOAD.
- 'Ausdruck' gibt den Wert an, welcher der dimensionierten Variable zugewiesen wird.
Seit FreeBASIC v.0.17 muss jeder Variablen mittels 'AS Typ' explizit ein Datentyp zugewiesen werden. Standarddatentypen (vgl. DEFxxx) stehen nur noch in Dialektformen wie -lang deprecated oder -lang qb zur Verfügung.
COMMON-Arrays sind immer dynamisch. Wenn ein Array allen Modulen zugänglich gemacht werden soll, muss eine leere Parameterliste übergeben werden. Die Dimensionierung findet später über DIM oder REDIM statt.
In allen Modulen muss derselbe Bezeichner für die Variable verwendet werden; die Reihenfolge der COMMON-Anweisungen ist damit gleichgültig.
Eine ähnliche Funktion bietet EXTERN, doch während COMMON die Variable in jedem Modul deklariert und Speicher reserviert, verweist EXTERN nur auf den Speicherbereich eines anderen Moduls und definiert den Variablennamen im eigenen Modul.
Beispiel:
Compilieren Sie dieses Beispiel mit der Kommandozeile:
<$fbc> Modul1.bas Modul2.bas -x modultest.exe
<$fbc> steht dabei für Pfad und Dateiname Ihres FB-Compilers.)
' Modul1.bas
COMMON SHARED a AS INTEGER
COMMON SHARED b() AS INTEGER
REDIM b(0 TO 2) AS INTEGER
DECLARE SUB PublicSub ()
a = 1
b(0) = 2
PublicSub
SLEEP
'========================
' Modul2.bas
COMMON SHARED b() AS INTEGER
COMMON SHARED a AS INTEGER
DECLARE SUB PublicSub ()
PUBLIC SUB PublicSub ()
PRINT "PublicSub in Modul2.bas"
PRINT "a = "; a, "b(0)= "; b(0)
END SUB
Ausgabe:
PublicSub in Modul2.bas
a = 1 b(0) = 2
Das komplette Einbinden eines Codes mittels INCLUDE ist oft vorteilhafter.
Unterschiede zu QB:
- In FreeBASIC sind über COMMON deklarierte Arrays immer dynamisch.
- Der Blockname wird in FreeBASIC nicht mehr benötigt und ist auch nicht mehr erlaubt, da die Reihenfolge der COMMON-Variablen keine Rolle mehr spielt, sondern nur die Bezeichner.
Siehe auch:
DIM, SHARED, EXTERN (Module), Module (Library / DLL), Gültigkeitsbereich von Variablen
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|