For more information on these options, see Programmer’s Guide
-
-Mmode
- Set language mode to mode, which can be one of the following:
-
delphi
- Try to be Delphi compatible. This is more strict than the objfpc mode, since
some Free Pascal extensions are switched off.
-
fpc
- Free Pascal dialect (default).
-
macpas
- Try to be compatible with Macintosh Pascal dialects.
-
objfpc
- Switch on some Delphi extensions. This is different from Delphi mode, because
some Free Pascal constructs are still available.
-
tp
- Try to be TP/BP 7.0 compatible. This means no function overloading etc.
-
-Mfeature
- Select language feature feature. As of FPC version 2.3.1, the -M command line
switch can be used to select individual language features. In that case, feature is one of the
following keywords:
-
CLASS
- Use object pascal classes.
-
OBJPAS
- Automatically include the ObjPas unit.
-
RESULT
- Enable the Result identifier for function results.
-
PCHARTOSTRING
- Allow automatic conversion of null-terminated strings to
strings,
-
CVAR
- Allow the use of the CVAR keyword.
-
NESTEDCOMMENTS
- Allow use of nested comments.
-
CLASSICPROCVARS
- Use classical procedural variables.
-
MACPROCVARS
- Use mac-style procedural variables.
-
REPEATFORWARD
- Implementation and Forward declaration must match
completely.
-
POINTERTOPROCVAR
- Allow silent conversion of pointers to procedural
variables.
-
AUTODEREF
- Automatic (silent) dereferencing of typed pointers.
-
INITFINAL
- Allow use of Initialization and Finalization
-
POINTERARITHMETICS
- Allow use of pointer arithmetic.
-
ANSISTRINGS
- Allow use of ansistrings.
-
OUT
- Allow use of the out parameter type.
-
DEFAULTPARAMETERS
- Allow use of default parameter values.
-
HINTDIRECTIVE
- Support the hint directives (deprecated, platform etc.)
-
DUPLICATELOCALS
- ?
-
PROPERTIES
- Allow use of global properties.
-
ALLOWINLINE
- Allow inline procedures.
-
EXCEPTIONS
- Allow the use of exceptions.
The keyword can be followed by a plus or minus sign to enable or disable the
feature.
-
-Rxxx
- Specify what kind of assembler you use in your asm assembler code blocks. Here xxx is one
of the following:
-
att
- asm blocks contain AT&T-style assembler. This is the default style.
-
intel
- asm blocks contain Intel-style assembler.
-
default
- Use the default assembler for the specified target.
-
direct
- asm blocks should be copied as is in the assembler, only replacing certain
variables.
-
-S2
- Switch on Delphi 2 extensions (objfpc mode). Deprecated, use -Mobjfpc instead.
-
-Sa
- Include assert statements in compiled code. Omitting this option will cause assert statements
to be ignored.
-
-Sc
- Support C-style operators, i.e. *=, +=, /= and -=.
-
-Sd
- Try to be Delphi compatible. Deprecated, use -Mdelphi instead.
-
-SeN
- The compiler stops after the N-th error. Normally, the compiler tries to continue compiling
after an error, until 50 errors are reached, or a fatal error is reached, and then it stops. With
this switch, the compiler will stop after the N-th error (if N is omitted, a default of 1 is
assumed). Instead of a number, one of n, h or w can also be specified. In that case the
compiler will consider notes, hints or warnings as errors and stop when one is
encountered.
-
-Sg
- Support the label and goto commands. By default these are not supported. You must also
specify this option if you use labels in assembler statements. (if you use the AT&T style
assember)
-
-Sh
- Use ansistrings by default for strings. If this option is specified, the compiler will interpret the
string keyword as an ansistring. Otherwise it is supposed to be a shortstring (TP
style).
-
-Si
- Support C++ style INLINE.
-
-SIXXX
- Set interfaces style to XXX.
-
-Sk
- Load the Kylix compatibility unit (fpcylix).
-
-Sm
- Support C-style macros.
-
-So
- Try to be Borland TP 7.0 compatible. Deprecated, use -Mtp instead.
-
-Ss
- The name of constructors must be init, and the name of destructors should be
done.
-
-St
- Allow the static keyword in objects.
-
-Sx
- Enable exception keywords (default in Delphi/Objfpc mode). This will mark all exception
related keywords as keywords, also in Turbo Pascal or FPC mode. This can be used to check
for code which should be mode-neutral as much as possible.
-
-Un
- Do not check the unit name. Normally, the unit name is the same as the filename. This
option allows them to be different.
-
-Us
- Compile a system unit. This option causes the compiler to define only some very basic
types.