Using, once again, a
very similar syntax to the C preprocessor, the NASM preprocessor lets you include other
source files into your code. This is done by the use of the %include
directive:
%include "macros.mac"
will include the contents of the file macros.mac
into the
source file containing the %include
directive.
Include files are first
searched for relative to the directory containing the source file that is performing the
inclusion, and then relative to any directories specified on the Yasm command line using
the -I
option (see Section 1.3.3.3), in the order given on
the command line (any relative paths on the Yasm command line are relative to the current
working directory, e.g. where Yasm is being run from). While this search strategy does
not match traditional NASM behavior, it does match the behavior of most C compilers and
better handles relative pathnames.
The standard C idiom for preventing a file being included more than once is just as
applicable in the NASM preprocessor: if the file macros.mac
has the form
%ifndef MACROS_MAC %define MACROS_MAC ; now define some macros %endif
then including the file more than once will not cause errors, because the second time
the file is included nothing will happen because the macro MACROS_MAC
will already be defined.
You can force a file to be included even if there is no %include
directive that explicitly includes it, by using the -P
option on the Yasm command line (see Section 1.3.3.4).