{{fbdoc item="title" value="Intrinsic Defines"}}----
Preprocessor symbols defined by the compiler.

{{fbdoc item="desc"}}
	Intrinsic defines are set by the compiler and may be used as any other defined symbol.  Intrinsic defines often convey information about the state of the compiler, either in general or at a specific point in the compilation process.  Most intrinsic defines are associated with a value.

**{{anchor name="PLATFORM|Platform Information"}}**
	Defines that provide information on the system.
**{{anchor name="VERSION|Version Information"}}**
	Defines that provide information on the ##**fbc**## compiler version being used.
**{{anchor name="CMDLINE|Command-line switches"}}**
	Defines that provide information with the command-line switches used with ##**fbc**##.
**{{anchor name="ENVIRONMENT|Environment Information"}}**
	Defines that provide information about the operating system environment.
**{{anchor name="CONTEXT|Context-specific Information"}}**
	Defines that provide context information about the compilation process.
**{{anchor name="BASICMACROS|Basic-macros"}}**
	Built-in basic-macros.
**{{anchor name="CONSTANTS|Constants"}}**
	Built-in constants.

<<{{anchor name="PLATFORM"}}{{fbdoc item="section" value="Platform Information"}}
	=={{fbdoc item="keyword" value="KeyPgDdfbwin32|__FB_WIN32__"}}==
		Defined if compiling for Windows.
	=={{fbdoc item="keyword" value="KeyPgDdfbwince|__FB_WINCE__"}}==
		Defined if compiling for Windows CE.
	=={{fbdoc item="keyword" value="KeyPgDdfblinux|__FB_LINUX__"}}==
		Defined if compiling for Linux.
	=={{fbdoc item="keyword" value="KeyPgDdfbdos|__FB_DOS__"}}==
		Defined if compiling for DOS.
	=={{fbdoc item="keyword" value="KeyPgDdfbcygwin|__FB_CYGWIN__"}}==
		Defined if compiling for Cygwin.
	=={{fbdoc item="keyword" value="KeyPgDdfbfreebsd|__FB_FREEBSD__"}}==
		Defined if compiling for ""FreeBSD"".
	=={{fbdoc item="keyword" value="KeyPgDdfbnetbsd|__FB_NETBSD__"}}==
		Defined if compiling for ""NetBSD"".
	=={{fbdoc item="keyword" value="KeyPgDdfbopenbsd|__FB_OPENBSD__"}}==
		Defined if compiling for ""OpenBSD"".
	=={{fbdoc item="keyword" value="KeyPgDdfbdarwin|__FB_DARWIN__"}}==
		Defined if compiling for Darwin.
	=={{fbdoc item="keyword" value="KeyPgDdfbhaiku|__FB_HAIKU__"}}==
		Defined if compiling for Haiku.
	=={{fbdoc item="keyword" value="KeyPgDdfbdragonfly|__FB_DRAGONFLY__"}}==
		Defined if compiling for ""DragonFly BSD"".
	=={{fbdoc item="keyword" value="KeyPgDdfbsolaris|__FB_SOLARIS__"}}==
		Defined if compiling for Solaris or a Solaris-family compatibility target.
	=={{fbdoc item="keyword" value="KeyPgDdfbillumos|__FB_ILLUMOS__"}}==
		Defined if compiling for illumos.
	=={{fbdoc item="keyword" value="KeyPgDdfbxbox|__FB_XBOX__"}}==
		Defined if compiling for Xbox.
	=={{fbdoc item="keyword" value="KeyPgDdfbwii|__FB_WII__"}}==
		Defined if compiling for Wii.
	=={{fbdoc item="keyword" value="KeyPgDdfbaros|__FB_AROS__"}}==
		Defined if compiling for AROS.
	=={{fbdoc item="keyword" value="KeyPgDdfbriscos|__FB_RISCOS__"}}==
		Defined if compiling for RISC OS.
	=={{fbdoc item="keyword" value="KeyPgDdfbnuttx|__FB_NUTTX__"}}==
		Defined if compiling for NuttX.
	=={{fbdoc item="keyword" value="KeyPgDdFBBigEndian|__FB_BIGENDIAN__"}}==
		Defined if compiling on a system using big-endian byte-order.
	=={{fbdoc item="keyword" value="KeyPgDdfbpcos|__FB_PCOS__"}}==
		Defined if compiling for a common PC OS (e.g. DOS, Windows, OS/2).
	=={{fbdoc item="keyword" value="KeyPgDdfbunix|__FB_UNIX__"}}==
		Defined if compiling for a Unix-like OS.
	=={{fbdoc item="keyword" value="KeyPgDdfb64bit|__FB_64BIT__"}}==
		Defined if compiling for a 64bit target.
	=={{fbdoc item="keyword" value="KeyPgDdfbarm|__FB_ARM__"}}==
		Defined if compiling for the ARM architecture.
	=={{fbdoc item="keyword" value="KeyPgDdfbppc|__FB_PPC__"}}==
		Defined if compiling for the ""PowerPC"" architecture.
	=={{fbdoc item="keyword" value="KeyPgDdfbriscv32|__FB_RISCV32__"}}==
		Defined if compiling for the 32-bit RISC-V architecture.
	=={{fbdoc item="keyword" value="KeyPgDdfbriscv64|__FB_RISCV64__"}}==
		Defined if compiling for the 64-bit RISC-V architecture.
	=={{fbdoc item="keyword" value="KeyPgDdfbs390x|__FB_S390X__"}}==
		Defined if compiling for the s390x architecture.
	=={{fbdoc item="keyword" value="KeyPgDdfbloongarch64|__FB_LOONGARCH64__"}}==
		Defined if compiling for the 64-bit LoongArch architecture.
	=={{fbdoc item="keyword" value="KeyPgDdfbm68k|__FB_M68K__"}}==
		Defined if compiling for the Motorola 68000 family.
	=={{fbdoc item="keyword" value="KeyPgDdfbmips|__FB_MIPS__"}}==
		Defined if compiling for any MIPS architecture.
	=={{fbdoc item="keyword" value="KeyPgDdfbmips32|__FB_MIPS32__"}}==
		Defined if compiling for a 32-bit MIPS architecture.
	=={{fbdoc item="keyword" value="KeyPgDdfbmips64|__FB_MIPS64__"}}==
		Defined if compiling for a 64-bit MIPS architecture.
	=={{fbdoc item="keyword" value="KeyPgDdfbx86|__FB_X86__"}}==
		Defined if compiling for the X86 / X86_64 architecture.
	=={{fbdoc item="keyword" value="KeyPgDdfbjs|__FB_JS__"}}==
		Defined if compiling for emscripten target.
	=={{fbdoc item="keyword" value="KeyPgDdfbandroid|__FB_ANDROID__"}}==
		Defined if compiling for android target.

{{anchor name="VERSION"}}{{fbdoc item="section" value="Version Information"}}
	=={{fbdoc item="keyword" value="KeyPgDdfbversion|__FB_VERSION__"}}==
		Defined as a string literal of the compiler version.
	=={{fbdoc item="keyword" value="KeyPgDdFBVerMajor|__FB_VER_MAJOR__"}}==
		Defined as an integral literal of the compiler major version number.
	=={{fbdoc item="keyword" value="KeyPgDdFBVerMinor|__FB_VER_MINOR__"}}==
		Defined as an integral literal of the compiler minor version number.
	=={{fbdoc item="keyword" value="KeyPgDdFBVerPatch|__FB_VER_PATCH__"}}==
		Defined as an integral literal of the compiler patch number.
	=={{fbdoc item="keyword" value="KeyPgDdFBMinVersion|__FB_MIN_VERSION__"}}==
		Macro to check for a minimum compiler version.
	=={{fbdoc item="keyword" value="KeyPgDdFBBuildDate|__FB_BUILD_DATE__"}}==
		Defined as a string literal of the compiler build date in "mm-dd-yyyy" format.
	=={{fbdoc item="keyword" value="KeyPgDdfbbuilddateiso|__FB_BUILD_DATE_ISO__"}}==
		Defined as a string literal of the compiler build date in "yyyy-mm-dd" format.
	=={{fbdoc item="keyword" value="KeyPgDdfbsignature|__FB_SIGNATURE__"}}== 
		Defined as a string literal of the compiler signature.
	=={{fbdoc item="keyword" value="KeyPgDdfbbuildsha1|__FB_BUILD_SHA1__"}}== 
		Defined as a string literal of the compiler's source revision sha-1.
	=={{fbdoc item="keyword" value="KeyPgDdfbbuildforkid|__FB_BUILD_FORK_ID__"}}== 
		Defined as a string literal of the custom defined project fork identifier name.

{{anchor name="CMDLINE"}}{{fbdoc item="section" value="Command-line switches"}}
	=={{fbdoc item="keyword" value="KeyPgDdcmdline|__CMDLINE__"}}==
		Defined as a string literal containing accepted options from source ###cmdline## directives, in directive order.
	=={{fbdoc item="keyword" value="KeyPgDdfbarch|__FB_ARCH__"}}==
		Defined as a string literal of the effective target architecture.
	=={{fbdoc item="keyword" value="KeyPgDdfbasm|__FB_ASM__"}}==
		Defined to either ##"intel"## or ##"att"## depending on [[CompilerOptasm|-asm]].
	=={{fbdoc item="keyword" value="KeyPgDdFBBackend|__FB_BACKEND__"}}==
		Defined to either ##"gas"## or ##"gcc"## depending on [[CompilerOptgen|-gen]].
	=={{fbdoc item="keyword" value="KeyPgDdfbgcc|__FB_GCC__"}}==
		True (##-1##) if -gen gcc is used, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbgfxlib3|__FB_GFXLIB3__"}}==
		Defined when the opt-in gfxlib3 runtime is selected.
	=={{fbdoc item="keyword" value="KeyPgDdfboptimize|__FB_OPTIMIZE__"}}==
		Defined to the optimization level depending on [[CompilerOptoptimization|-O]].
	=={{fbdoc item="keyword" value="KeyPgDdfbgui|__FB_GUI__"}}==
		True (##-1##) if GUI subsystem mode is active, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbverbose|__FB_VERBOSE__"}}==
		True (##-1##) if verbose mode is active, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbentry|__FB_ENTRY__"}}==
		Defined as a string literal of the custom entry point, or an empty string if none was specified.
	=={{fbdoc item="keyword" value="KeyPgDdfbexport|__FB_EXPORT__"}}==
		True (##-1##) if exports are enabled, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbgosubsetjmp|__FB_GOSUB_SETJMP__"}}==
		True (##-1##) if the setjmp/longjmp GOSUB implementation is enabled, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbnobuiltins|__FB_NOBUILTINS__"}}==
		True (##-1##) if nonessential builtin declarations and definitions are disabled, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbnocmdline|__FB_NOCMDLINE__"}}==
		True (##-1##) if source ###cmdline## directives are disabled, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbnofastcall|__FB_NO_FASTCALL__"}}==
		True (##-1##) if ##__fastcall## directives are ignored, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbnothiscall|__FB_NO_THISCALL__"}}==
		True (##-1##) if ##__thiscall## directives are ignored, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfboptabstract|__FB_OPTABSTRACT__"}}==
		True (##-1##) if unused pure abstract types are not emitted, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbpic|__FB_PIC__"}}==
		True (##-1##) if position-independent code is active, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbreturninflts|__FB_RETURN_IN_FLTS__"}}==
		True (##-1##) if supported structures may be returned in floating-point registers, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbvalistasptr|__FB_VALIST_AS_PTR__"}}==
		True (##-1##) if variadic argument lists use pointer expressions, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdFBMain|__FB_MAIN__"}}==
		Defined if compiling a module with an entry point.
	=={{fbdoc item="keyword" value="KeyPgDdfbdebug|__FB_DEBUG__"}}==
		True (##-1##) if the ##"-g"## switch was used, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfberr|__FB_ERR__"}}==
		Zero (##0##) if neither the ##"-e"##, ##"-ex"## or ##"-exx"## switches were used.
	=={{fbdoc item="keyword" value="KeyPgDdfbfpmode|__FB_FPMODE__"}}==
		Defined as ##"fast"## if compiling for fast SSE math, ##"precise"## otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbfpu|__FB_FPU__"}}==
		Defined as ##"sse"## if compiling for SSE floating point unit, or ##"x87"## for normal x87 floating-point unit.
	=={{fbdoc item="keyword" value="KeyPgDdfblang|__FB_LANG__"}}==
		Defined to a string literal of the ##"-lang"## dialect used.
	=={{fbdoc item="keyword" value="KeyPgDdfbmt|__FB_MT__"}}==
		True (##-1##) if the ##"-mt"## switch was used, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfboutdll|__FB_OUT_DLL__"}}==
		True (##-1##) in a module being compiled and linked into a shared library, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfboutexe|__FB_OUT_EXE__"}}==
		True (##-1##) in a module being compiled and linked into an executable, false (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfboutlib|__FB_OUT_LIB__"}}==
		True (##-1##) in a module being compiled and linked into a static library, zero (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfboutobj|__FB_OUT_OBJ__"}}==
		True (##-1##) in a module being compiled only, zero (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfbprofile|__FB_PROFILE__"}}==
		Set to an integer to indicate the profiling method.
	=={{fbdoc item="keyword" value="KeyPgDdfbsse|__FB_SSE__"}}==
		Defined if compiling for SSE floating point unit.
	=={{fbdoc item="keyword" value="KeyPgDdfbvectorize|__FB_VECTORIZE__"}}==
		Defined as the level of automatic vectorization (##0## to ##2##)
<<>>{{anchor name="ENVIRONMENT"}}{{fbdoc item="section" value="Environment Information"}}
	=={{fbdoc item="keyword" value="KeyPgDdfbargc|__FB_ARGC__"}}==
		Defined as an integer literal of the number of command-line arguments passed to the program.
	=={{fbdoc item="keyword" value="KeyPgDdfbargv|__FB_ARGV__"}}==
		Defined as a ##[[KeyPgZstring|Zstring]] [[KeyPgPtr|Ptr]] [[KeyPgPtr|Ptr]]## to the command line arguments passed to the program.
	=={{fbdoc item="keyword" value="KeyPgDddateiso|__DATE__"}}==
		Defined as a string literal of the compilation date in "mm-dd-yyyy" format.
	=={{fbdoc item="keyword" value="KeyPgDddate|__DATE_ISO__"}}==
		Defined as a string literal of the compilation date in "yyyy-mm-dd" format.
	=={{fbdoc item="keyword" value="KeyPgDdtime|__TIME__"}}==
		Defined as a string literal of the compilation time.
	=={{fbdoc item="keyword" value="KeyPgDdpath|__PATH__"}}==
		Defined as a string literal of the absolute path of the module.

{{anchor name="CONTEXT"}}{{fbdoc item="section" value="Context-specific Information"}}
	=={{fbdoc item="keyword" value="KeyPgDdfile|__FILE__"}} and {{fbdoc item="keyword" value="KeyPgDdfilenq|__FILE_NQ__"}}==
		Defined as the name of the module.
	=={{fbdoc item="keyword" value="KeyPgDdfunction|__FUNCTION__"}} and {{fbdoc item="keyword" value="KeyPgDdfunctionnq|__FUNCTION_NQ__"}}==
		Defined as the name of the procedure where it's used.
	=={{fbdoc item="keyword" value="KeyPgDdline|__LINE__"}}==
		Defined as an integer literal of the line of the module where it's used.
	=={{fbdoc item="keyword" value="KeyPgDdfboptionbyval|__FB_OPTION_BYVAL__"}}==
		True (##-1##) if parameters are declared by value by default, zero (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfboptiondynamic|__FB_OPTION_DYNAMIC__"}}==
		True (##-1##) if all arrays are variable-length, zero (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfboptionescape|__FB_OPTION_ESCAPE__"}}==
		True (##-1##) if string literals are processed for escape sequences, zero (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfboptiongosub|__FB_OPTION_GOSUB__"}}==
		True (##-1##) if gosub support is enabled, zero (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfboptionexplicit|__FB_OPTION_EXPLICIT__"}}==
		True (##-1##) if variables and objects need to be explicitly declared, zero (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfboptionprivate|__FB_OPTION_PRIVATE__"}}==
		True (##-1##) if all procedures are private by default, zero (##0##) otherwise.
	=={{fbdoc item="keyword" value="KeyPgDdfboptionprofile|__FB_OPTION_PROFILE__"}}==
		True (##-1##) if profiling code is generated, zero (##0##) otherwise.

{{anchor name="BASICMACROS"}}{{fbdoc item="section" value="Basic-macros"}}
	=={{fbdoc item="keyword" value="KeyPgDdfbargcount|__FB_ARG_COUNT__"}}==
		Counts the number of arguments in an argument list.
	=={{fbdoc item="keyword" value="KeyPgDdfbargextract|__FB_ARG_EXTRACT__"}}==
		Returns nth argument from an argument list.
	=={{fbdoc item="keyword" value="KeyPgDdfbargleftof|__FB_ARG_LEFTOF__"}}==
		Returns left token based on separator.
	=={{fbdoc item="keyword" value="KeyPgDdfbarglistexpand|__FB_ARG_LISTEXPAND__"}}==
		Expands a macro one or more time on an argument list
	=={{fbdoc item="keyword" value="KeyPgDdfbargrightof|__FB_ARG_RIGHTOF__"}}==
		Returns right token based on separator.
	=={{fbdoc item="keyword" value="KeyPgDdfbeval|__FB_EVAL__"}}==
		Evaluates an argument (expression) at compile time.
	=={{fbdoc item="keyword" value="KeyPgDdfbiif|__FB_IIF__"}}==
		Returns an expression depending on the result of a comparison expression evaluated at compile time.
	=={{fbdoc item="keyword" value="KeyPgDdfbjoin|__FB_JOIN__"}}==
		Joins two token arguments together as one.
	=={{fbdoc item="keyword" value="KeyPgDdfbquerysymbol|__FB_QUERY_SYMBOL__"}}==
		Queries a ##**fbc**##'s symbol internals.
	=={{fbdoc item="keyword" value="KeyPgDdfbquote|__FB_QUOTE__"}}==
		Converts the argument to a string.
	=={{fbdoc item="keyword" value="KeyPgDdfbuniqueid|__FB_UNIQUEID__"}}==
		Gets the identifier at the top of a stack.
	=={{fbdoc item="keyword" value="KeyPgDdfbuniqueidpop|__FB_UNIQUEID_POP__"}}==
		Pops an identifier off of a stack.
	=={{fbdoc item="keyword" value="KeyPgDdfbuniqueidpush|__FB_UNIQUEID_PUSH__"}}==
		Pushes a new unique identifier on to a stack.
	=={{fbdoc item="keyword" value="KeyPgDdfbunquote|__FB_UNQUOTE__"}}==
		Takes a literal string and converts it back to tokens.

{{anchor name="CONSTANTS"}}{{fbdoc item="section" value="Constants"}}
	=={{fbdoc item="keyword" value="KeyPgFalse|FALSE"}} and {{fbdoc item="keyword" value="KeyPgTrue|TRUE"}}==
		Intrinsic constants for the Boolean data type.
>>::c::

{{fbdoc item="back" value="DocToc|Table of Contents"}}{{fbdoc item="back" value="CatPgProgrammer|Programmer's Guide"}}
