EXTERN
is similar to
the MASM directive EXTRN
and the C keyword extern
: it is used to declare a symbol which is not defined anywhere in
the module being assembled, but is assumed to be defined in some other module and needs
to be referred to by this one. Not every object-file format can support external
variables: the bin
format cannot.
The EXTERN
directive takes as many arguments as you like.
Each argument is the name of a symbol:
extern _printf extern _sscanf, _fscanf
Some object-file formats provide extra features to the EXTERN
directive. In all cases, the extra features are used by suffixing
a colon to the symbol name followed by object-format specific text. For example, the
obj
format allows you to declare that the default segment
base of an external should be the group dgroup
by means of
the directive
extern _variable:wrt dgroup
The primitive form of EXTERN
differs from the user-level
form only in that it can take only one argument at a time: the support for multiple
arguments is implemented at the preprocessor level.
You can declare the same variable as EXTERN
more than
once: NASM will quietly ignore the second and later redeclarations. You can’t declare a
variable as EXTERN
as well as something else, though.