The preprocessor is used to transform your sources before compilation. It allows you to include
other files and to define macros that will be expanded when used in the source. It behaves
similar to the C preprocessor, with some differences.
Important: The preprocessor
should be avoided if there is an alternative in the native language. For example, instead of
defining program constants with a &define macro, use the
CONSTANT instruction. Other language
features such as
IMPORT FGL
increase code readability and modular programming, without the need of a preprocessor. The
preprocessor might be desupported in a future version.
The preprocessor transforms files as follows:
- The source file is read and split into lines.
- Continued lines are merged into one long line if it is part of
a preprocessor definition.
- Comments are not removed unless they appear in a macro definition.
- Each line is split into a list of lexical tokens.
The preprocessor implements the following features:
- File inclusion
- Conditional compilation
- Macro definition and expansion
There are two kind of macros:
- Simple macros
- Function macros
If a preprocessing directive is invalid, the compilers will generate a .err file with the
preprocessing error included in the source file at the line position where the problem exists.
When using the -M option, preprocessor errors will be printed to stderr, like
regular compiler errors.