Extern

Declares a variable, array or object having external linkage

Syntax
	Extern [ KeyPgImportImport ] symbolname[ (subscripts) ] [ KeyPgAliasAlias "aliasname" ] KeyPgAsAs 
	DataType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 KeyPgCommonCommon or KeyPgDimDim). It also has the effect of making 
	symbolname a shared name, meaning it is visible within procedures (see 
	KeyPgSharedShared). A symbolname declared as external name can be (re)defined 
	(using Dim or Redim) only in a single external module.

	If KeyPgAlias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 KeyPgImport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 CompilerOptlang-lang qb dialect.

Differences from QB
	* New to FreeBASIC

See also
	* KeyPgExternBlockExtern...End Extern
	* KeyPgCommonCommon
	* KeyPgDimDim
	* KeyPgSharedShared
	* KeyPgAliasAlias (Name)
	* KeyPgAliasModifierAlias (Modifier)

