Contents|Index|Previous|Next
Options
Controlling the Preprocessor
The following 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
Process file
as input before processing the regular input file. In effect, the contents
of file are
compiled first. Any -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
Process file as
input, discarding the resulting output, before processing the regular input
file. Because the output generated from file is discarded, the only effect
of -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 the -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
Add the directory
dir
to the second include path. The directories on the second include path
are searched when a header file is not found in any of the directories
in the main include path (the one that -I
adds to).
-iprefix prefix
Specify prefix
as the prefix for subsequent -iwithprefix
options.
-iwithprefix dir
Add a directory
to the second include path. The directorys name is made by concatenating
prefix and
dir,
where prefix was
specified previously with -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
Add a directory
to the main include path. The directorys name is made by concatenating
prefix
and dir,
as in the case of -iwithprefix.
-isystem dir
Add a directory
to the beginning of the second include path, marking it as a system directory,
so that it gets the same special treatment as is applied to the standard
system directories.
-nostdinc
Do not search
the standard system directories for header files. Only the directories
you have specified with -I
options (and the current directory, if appropriate) are searched. See Options
for Directory Search 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
Do not predefine
any nonstandard macros, including architecture flags.
-E
Run only the C
preprocessor. Preprocess all the C source files specified and output the
results to standard output or to the specified output file.
-C
Tell the preprocessor
not to discard comments. Used with the -E
option.
-P
Tell the preprocessor
not to generate #line
directives. Used with the -E
option.
-M
Tell the preprocessor
to output a rule suitable for make
describing the dependencies of each object file. For each source file,
the preprocessor outputs one make-rule
whose target is the object filename 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
Affecting GNU CC).
-MM
Like -M
but the output mentions only the user header files included with #include
"file".
System header files included
with #include <file>
are omitted.
-MD
Like -M
but the dependency information is written to a file made by replacing .c
with .d
at the end of the input filenames. 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
Like -MD
except output mentions only user header files, not system header files.
-MG
Treat missing
header files as generated files and assume they live in the same directory
as the source file. If you specify -MG,
you must also specify either -M
or -MM.
-MG
is not supported with -MD
or -MMD.
-H
Print the name
of each header file used, in addition to other normal activities.
-Aquestion(answer)
Assert the answer
answer
for question,
in case it is tested with a preprocessing conditional such as #if
#question(answer).
-A-
disables the standard assertions that normally describe the target machine.
-Dmacro
Define macro
macro with
the string 1
as its definition.
-Dmacro=defn
Define macro
macro
as defn.
All instances of -D
on the command line are processed before any -U
options.
-Umacro
Undefine macro
macro.
The -U
options are evaluated after all -D
options, but before any -include
and -imacros
options.
-dM
Tell the preprocessor
to output only a list of the macro definitions that are in effect at the
end of preprocessing. Used with the -E
option.
-dD
Tell the preprocessing
to pass all macro definitions into the output, in their proper sequence
in the rest of the output.
-dN
Like -dD
except that the macro arguments and contents are omitted. Only #define
name is
included in the output.
-trigraphs
Support ANSI C
trigraphs. The -ansi
option also has this effect.
-Wp, option
Pass option
as an option
to the preprocessor. If option
contains commas,
it is split into multiple options at the commas.