These options control the C preprocessor, which is run on each C source file before actual compilation.
If you use the `-E
' option, nothing is done except preprocessing.
Some of these options make sense only together with `-E
' because
they cause the preprocessor output to be unsuitable for actual
compilation.
-include file
-D
'
and `-U
' options on the command line are always processed before
`-include file
', regardless of the order in which they are
written. All the `-include
' and `-imacros
' options are
processed in the order in which they are written.
-imacros file
-imacros file
'
is to make the macros defined in file available for use in the
main input.
Any `-D
' and `-U
' options on the command line are always
processed before `-imacros file
', regardless of the order in
which they are written. All the `-include
' and `-imacros
'
options are processed in the order in which they are written.
-idirafter dir
-I
' adds to).
-iprefix prefix
-iwithprefix
'
options.
-iwithprefix dir
-iprefix
'. If you have not specified a
prefix yet, the directory containing the installed passes of the
compiler is used as the default.
-iwithprefixbefore dir
-iwithprefix
'.
-isystem dir
-nostdinc
-I
' options (and the
current directory, if appropriate) are searched. See Directory Options, for information on `-I
'.
By using both `-nostdinc
' and `-I-
', you can limit the include-file
search path to only those directories you specify explicitly.
-undef
-E
-C
-E
' option.
-P
#line
' commands.
Used with the `-E
' option.
-M
make
describing the dependencies of each object file. For each source file,
the preprocessor outputs one make
-rule whose target is the object
file name for that source file and whose dependencies are all the
#include
header files it uses. This rule may be a single line or
may be continued with `\
'-newline if it is long. The list of rules
is printed on standard output instead of the preprocessed C program.
`-M
' implies `-E
'.
Another way to specify output of a make
rule is by setting
the environment variable DEPENDENCIES_OUTPUT
(see Environment Variables).
-MM
-M
' but the output mentions only the user header files
included with `#include "file"
'. System header files
included with `#include <file>
' are omitted.
-MD
-M
' but the dependency information is written to a file made by
replacing ".c" with ".d" at the end of the input file names.
This is in addition to compiling the file as specified---`-MD
' does
not inhibit ordinary compilation the way `-M
' does.
In Mach, you can use the utility md
to merge multiple dependency
files into a single dependency file suitable for using with the `make
'
command.
-MMD
-MD
' except mention only user header files, not system
header files.
-MG
-MG
', you
must also specify either `-M
' or `-MM
'. `-MG
' is not
supported with `-MD
' or `-MMD
'.
-H
-Aquestion(answer)
#if #question(answer)
'. `-A-
' disables the standard
assertions that normally describe the target machine.
-Dmacro
1
' as its definition.
-Dmacro=defn
-D
' on
the command line are processed before any `-U
' options.
-Umacro
-U
' options are evaluated after all
`-D
' options, but before any `-include
' and `-imacros
'
options.
-dM
-E
'
option.
-dD
-dN
-dD
' except that the macro arguments and contents are omitted.
Only `#define name
' is included in the output.
-trigraphs
-ansi
' option also has this effect.