Private

Specifies a procedure having internal linkage

Syntax
	Private KeyPgSubSub procedure_name [KeyPgCdeclcdecl|KeyPgStdcallstdcall|KeyPgPascalpascal] [KeyPgOverloadOverload] [KeyPgAliasAlias 
	"external_name"] [([parameter_list])] [KeyPgModuleConstructorConstructor [priority]] [KeyPgStaticStatic] 
	[KeyPgExportExport]
		..procedure body..
	KeyPgEndEnd KeyPgSubSub

	Private KeyPgFunctionFunction procedure_name [KeyPgCdeclcdecl|KeyPgStdcallstdcall|KeyPgPascalpascal] [KeyPgOverloadOverload] [KeyPgAliasAlias 
	"external_name"] [([parameter_list])] [ KeyPgByrefFunctionByRef ] KeyPgAsAs return_type  [KeyPgStaticStatic] 
	[KeyPgExportExport]
		..procedure body..
	KeyPgEndEnd KeyPgFunctionFunction

Description
	In procedure definitions (forbidden at declaration line level), Private 
	specifies that a procedure has internal linkage, meaning its name is not 
	visible to external modules.
	Therefore among the compiled modules, two procedures with the same 
	identifier, but defined inside different modules, may exist if both are 
	Private.

	The compiler removes the Private procedures that are not called, but 
	this does not currently work for Private procedures that are only called 
	by other Private procedures that are not called themselves, because the 
	first one appears as being called.

	The KeyPgOptionprivateOption Private statement allows procedures to be defined with 
	internal linkage by default.

Example
	'e.g.

	Private Sub i_am_private
	End Sub

	Sub i_am_public
	End Sub

Differences from QB
	* New to FreeBASIC

See also
	* KeyPgVisPrivatePrivate: (Access Control)
	* KeyPgPublicPublic
	* KeyPgOptionprivateOption Private
	* KeyPgSubSub
	* KeyPgFunctionFunction

