COMMON

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » C » COMMON

Syntax A: COMMON [SHARED] Variable1[()] AS Typ [= Ausdruck] [, Variable2[()] AS Typ [= Ausdruck] [, ...] ]
Syntax B: COMMON [SHARED] AS Typ Variable1[()] [= Ausdruck] [, Variable2[()] [= Ausdruck] [, ...] ]
Typ: Anweisung
Kategorie: Bibliotheken

COMMON dimensioniert Variablen und Arrays (vgl. DIM) und macht sie mehreren Modulen zugänglich.

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:

Siehe auch:
DIM, SHARED, EXTERN (Module), Module (Library / DLL), Gültigkeitsbereich von Variablen