Chapter 1
Compiler directives

Free Pascal supports compiler directives in the source le. They are not the same as Turbo Pascal directives, although some are supported for compatibility. There is a distinction between local and global directives; local directives take eect from the moment they are encountered, global directives have an eect on all of the compiled code.

Many switches have a long form also. If they do, then the name of the long form is given also. For long switches, the + or - character to switch the option on or o, may be replaced by ON or OFF keywords.

Thus {$I+} is equivalent to {$IOCHECKS ON} or {$IOCHECKS +} and {$C-} is equivalent to {$ASSERTIONS OFF} or {$ASSERTIONS -}

The long forms of the switches are the same as their Delphi counterparts.


 1.1 Local directives
  1.1.1 $A or $ALIGN : Align Data
  1.1.2 $ASMMODE : Assembler mode (Intel 80x86 only)
  1.1.3 $B or $BOOLEVAL : Complete boolean evaluation
  1.1.4 $C or $ASSERTIONS : Assertion support
  1.1.5 $CALLING : Specify calling convention
  1.1.6 $CHECKPOINTER : Check pointer values
  1.1.7 $CODEALIGN : Set the code alignment
  1.1.8 $COPERATOR : Allow C like operators
  1.1.9 $DEFINE : Dene a symbol
  1.1.10 $ELSE : Switch conditional compilation
  1.1.11 $ELSEC : Switch conditional compilation
  1.1.12 $ENDC : End conditional compilation
  1.1.13 $ENDIF : End conditional compilation
  1.1.14 $ERROR : Generate error message
  1.1.15 $EXTENDEDSYM: Ignored
  1.1.16 $F : Far or near functions
  1.1.17 $FATAL : Generate fatal error message
  1.1.18 $FPUTYPE : Select coprocessor type
  1.1.19 $GOTO : Support Goto and Label
  1.1.20 $H or $LONGSTRINGS : Use AnsiStrings
  1.1.21 $HINT : Generate hint message
  1.1.22 $HINTS : Emit hints
  1.1.23 $HPPEMIT: Ignored
  1.1.24 $IF : Start conditional compilation
  1.1.25 $IFC : Start conditional compilation
  1.1.26 $IFDEF Name : Start conditional compilation
  1.1.27 $IFNDEF : Start conditional compilation
  1.1.28 $IFOPT : Start conditional compilation
  1.1.29 $IMPLICITEXCEPTIONS : Do not generate nalization code
  1.1.30 $INFO : Generate info message
  1.1.31 $INLINE : Allow inline code.
  1.1.32 $INTERFACES : Specify Interface type.
  1.1.33 $I or $IOCHECKS : Input/Output checking
  1.1.34 $I or $INCLUDE : Include le
  1.1.35 $I or $INCLUDE : Include compiler info
  1.1.36 $I386_XXX : Specify assembler format (Intel 80x86 only)
  1.1.37 $J or $WRITABLECONSTS : Allow typed consts
  1.1.38 $L or $LINK : Link object le
  1.1.39 $LINKLIB : Link to a library
  1.1.40 $M or $TYPEINFO : Generate type info
  1.1.41 $MACRO : Allow use of macros.
  1.1.42 $MAXFPUREGISTERS : Maximum number of FPU registers for variables
  1.1.43 $MESSAGE : Generate info message
  1.1.44 $MMX : Intel MMX support (Intel 80x86 only)
  1.1.45 $NODEFINE : Ignored
  1.1.46 $NOTE : Generate note message
  1.1.47 $NOTES : Emit notes
  1.1.48 $OBJECTCHECK : Check Object
  1.1.49 $OUTPUT_FORMAT : Specify the output format
  1.1.50 $PACKENUM : Minimum enumeration type size
  1.1.51 $PACKRECORDS : Alignment of record elements
  1.1.52 $Q $OVERFLOWCHECKS: Overow checking
  1.1.53 $R or $RANGECHECKS : Range checking
  1.1.54 $R or $RESOURCE : Include resource
  1.1.55 $SATURATION : Saturation operations (Intel 80x86 only)
  1.1.56 $SETC : Dene and assign a value to a symbol
  1.1.57 $STATIC : Allow use of Static keyword.
  1.1.58 $STOP : Generate fatal error message
  1.1.59 $T or $TYPEDADDRESS : Typed address operator (@)
  1.1.60 $UNDEF : Undene a symbol
  1.1.61 $V or $VARSTRINGCHECKS : Var-string checking
  1.1.62 $W or $STACKFRAMES : Generate stackframes
  1.1.63 $WAIT : Wait for enter key press
  1.1.64 $WARNING : Generate warning message
  1.1.65 $WARNINGS : Emit warnings
 1.2 Global directives
  1.2.1 $APPID : Specify application ID.
  1.2.2 $APPID : Specify application name.
  1.2.3 $APPTYPE : Specify type of application.
  1.2.4 $CALLING : Default calling convention
  1.2.5 $CODEPAGE : Set the source codepage
  1.2.6 $COPYRIGHT specify copyright info
  1.2.7 $D or $DEBUGINFO : Debugging symbols
  1.2.8 $DESCRIPTION : Application description
  1.2.9 $D $DEBUGINFO : Include debug info
  1.2.10 $E : Emulation of coprocessor
  1.2.11 $G : Generate 80286 code
  1.2.12 $INCLUDEPATH : Specify include path.
  1.2.13 $INTERFACES : Default interface type
  1.2.14 $L or $LOCALSYMBOLS : Local symbol information
  1.2.15 $LIBRARYPATH : Specify library path.
  1.2.16 $M or $MEMORY : Memory sizes
  1.2.17 $MODE : Set compiler compatibility mode
  1.2.18 $N : Numeric processing
  1.2.19 $O : Overlay code generation
  1.2.20 $OBJECTPATH : Specify object path.
  1.2.21 $P or $OPENSTRINGS : Use open strings
  1.2.22 $PROFILE : Proling
  1.2.23 $S : Stack checking
  1.2.24 $SCREENNAME : Specify screen name
  1.2.25 $SMARTLINK : Use smartlinking
  1.2.26 $THREADNAME : Set thread name in Netware
  1.2.27 $THREADING : Allow use of threads.
  1.2.28 $UNITPATH : Specify unit path.
  1.2.29 $VERSION : Specify DLL version.
  1.2.30 $WEAKPACKAGEUNIT : ignored
  1.2.31 $X or $EXTENDEDSYNTAX : Extended syntax
  1.2.32 $Y or $REFERENCEINFO : Insert Browser information