Extern

Declares a variable, array or object having external linkage

Syntax
   Extern [ Import ] symbolname[ (subscripts) ] [ Alias "aliasname" ] As 
   DataType [, ...]

Parameters
   symbolname
      The name of the variable, array or object.
   aliasname
      An alternate external name for the variable, array or object.

Description
   Declares symbolname as an external name, meaning it is global to 
   external modules including those to be compiled as static and dynamic 
   libraries (DLLs).
   Extern only declares variables, arrays and objects, and does not define 
   them (different from Common or Dim). It also has the effect of making 
   symbolname a shared name, meaning it is visible within procedures (see 
   Shared). A symbolname declared as external name can be (re)defined 
   (using Dim or Redim) only in a single external module.

   If Alias is used, aliasname will be used as the external name rather 
   than symbolname, and its case will be preserved.

   Extern was added in order to support the C libraries.

   If Import is used, the name will be added to the dynamic library import 
   list so its address can be fixed at run-time.

Example
   '' extern1.bas

   Extern Foo Alias "foo" As Integer

   Sub SetFoo
      foo = 1234
   End Sub

   '' extern2.bas

   Declare Sub SetFoo

   Extern Foo Alias "foo" As Integer

   Dim foo As Integer = 0

   SetFoo

   Print Foo

Output:

    1234

Platform Differences
   * Windows does not support Extern with a dynamic library (compiled with 
     -dll or -dylib).

Dialect Differences
   * Not available in the -lang qb dialect.

Differences from QB
   * New to FreeBASIC

See also
   * Extern...End Extern
   * Common
   * Dim
   * Shared
   * Alias (Name)
   * Alias (Modifier)

