{{fbdoc item="title" value="Identifier Rules"}}----
Naming conventions for ""FreeBASIC"" symbols.

{{fbdoc item="desc"}}
	An identifier is a symbolic name which uniquely identifies a [[ProPgVariables|variable]], ##[[KeyPgType|Type]]##, ##[[KeyPgUnion|Union]]##, ##[[KeyPgEnum|Enum]]##, ##[[KeyPgFunction|Function]]##, ##[[KeyPgSub|Sub]]##, or ##[[KeyPgProperty|Property]]##, within its [[ProPgVariableScope|scope]] or ##[[KeyPgNamespace|Namespace]]##.
	
	Identifiers may contain only uppercase and lowercase Latin characters ##a##-##z## and ##A##-##Z##), digits (##0##-##9##), and the underscore character (##_##). The first character of an identifier must be a letter or underscore, not a digit.
	
	Identifiers are case-insensitive: ##FOO## and ##foo## (and all other permutations of uppercase and lowercase) refer to the same symbol.
	
	In the //[[CompilerOptlang|-lang qb]]// and //[[CompilerOptlang|-lang fblite]]// dialects, identifiers may have a type suffix at the end indicating one of the standard data types:
	
	- ##%## for ##[[KeyPgInteger|Integer]]##
	- ##&## for ##[[KeyPgLong|Long]]##
	- ##!## for ##[[KeyPgSingle|Single]]##
	- ##""#""## for ##[[KeyPgDouble|Double]]##
	- ##$## for ##[[KeyPgString|String]]##
	
	The use of these symbols is generally discouraged in and is not allowed in the //[[CompilerOptlang|-lang fb]]// dialect (the default).
	
	The alternative is to be explicit - for example, ##Dim As Integer foo## or ##Dim foo As Integer## instead of ##Dim foo%##.
	
	In the //[[CompilerOptlang|-lang qb]]// and //[[CompilerOptlang|-lang fblite]]// dialects, identifiers may contain one or more periods (##.##).

{{fbdoc item="lang"}}
	- Periods in symbol names are only supported in the //[[CompilerOptlang|-lang qb]]// and //[[CompilerOptlang|-lang fblite]]// dialects.

{{fbdoc item="diff"}}
	- Support for the underscore character (##_##) in symbol names is new to ""FreeBASIC"".

{{fbdoc item="see"}}
	- [[ProPgVariables|Variables]]

{{fbdoc item="back" value="CatPgProgrammer|Programmer's Guide"}}