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.
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.
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 “-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.
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).
Specify prefix as the prefix for subsequent “-iwithprefix” options.
Add a directory to the second include path. The directory's 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.
Add a directory to the main include path. The directory's name is made by concatenating prefix and dir, as in the case of “-iwithprefix”.
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.
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 Section 1.12, 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.
Do not predefine any nonstandard macros. (Including architecture flags).
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.
Tell the preprocessor not to discard comments. Used with the “-E” option.
Tell the preprocessor not to generate “#line” directives. Used with the “-E” option.
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 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 Section 1.15.).
Like “-M” but the output mentions only the user header files included with “#include "file"”. System header files included with “#include <file>” are omitted.
Like “-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.
Like “-MD” except mention only user header files, not system header files.
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”.
Print the name of each header file used, in addition to other normal activities.
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.
Define macro macro with the string “1” as its definition.
Define macro macro as defn. All instances of “-D” on the command line are processed before any “-U” options.
Undefine macro macro. “-U” options are evaluated after all “-D” options, but before any “-include” and “-imacros” options.
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.
Tell the preprocessing to pass all macro definitions into the output, in their proper sequence in the rest of the output.
Like “-dD” except that the macro arguments and contents are omitted. Only “#define name” is included in the output.
Support ANSI C trigraphs. The “-ansi” option also has this effect.
Pass option as an option to the preprocessor. If option contains commas, it is split into multiple options at the commas.