COMMON
- Source: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgCommon
- Last revised: 2021-10-05
Variable declaration and scope modifier
Syntax
` Common [Shared] symbolname[()] [AS DataType] [, ...]
`
Description
Declares a variable which is shared between code modules, including those to be compiled as static and dynamic libraries (DLLs).
A matching Common statement must appear in all other code modules using the variable.
Common variables cannot be initialized.
Common arrays are always variable-length, and must be defined with an empty parameter list (), and its dimensions set in a later Dim or Redim statement.
Common variables cannot be instances of a user-defined type having a constructor or a destructor even implicit.
The Shared optional parameter makes the variable global so that it can be used inside subs and functions, as well as at module level.
Examples
start GeSHi
'' common1.bas
Declare Sub initme()
Common Shared foo() As Double
ReDim foo(0 To 2)
initme()
Print foo(0), foo(1), foo(2)end GeSHi
start GeSHi
'' common2.bas
Common Shared foo() As Double
Sub initme()
foo(0) = 4*Atn(1)
foo(1) = foo(0)/3
foo(2) = foo(1)*2
End Subend GeSHi
After compiling the two files like:
fbc common1.bas common2.bas
running common1 produces the output:
3.141592653589793 1.047197551196598 2.094395102393195Platform Differences
- Windows does not support
Commonwith a dynamic library (compiled with -dll or -dylib).
Differences from QB
- The arrays will be always variable-length.
blocknameis not needed and must be removed because the order of declaration no longer matters, only the symbol names.Commondoes not allow to keep the values of certain variables when chaining programs withChain.
See also
DimEraseExternLboundRedimPreserveSharedStaticUboundVar
Back to DocToc