-->

Previous | Table of Contents | Next

Page 83

_U name Do not predefine name. If both _U and _D are specified for one name, the _U beats the _D and the name is not predefined.
_undef Do not predefine any nonstandard macros.
_A name(value) Assert (in the same way as the #assert directive) the predicate name with tokenlist value . Remember to escape or quote the parentheses on shell command lines. You can use _A- to disable all predefined assertions; it also undefines all predefined macros.
_dM Instead of outputting the result of preprocessing, output a list of #define directives for all the macros defined during the execution of the preprocessor, including predefined macros. This gives you a way of finding out what is predefined in your version of the preprocessor; assuming you have no file foo.h, the command
touch foo.h; cpp _dM foo.h
will show the values of any predefined macros.
_dD Like _dM except in two respects: it does not include the predefined macros, and it outputs both the #define directives and the result of preprocessing. Both kinds of output go to the standard output file.
_M[_MG] Instead of outputting the result of preprocessing, output a rule suitable for make describing the dependencies of the main source file. The preprocessor outputs one make rule containing the object filename for that source file, a colon, and the names of all the included files. If there are many included files then the rule is split into several lines using \\ (newline).
_MG says to treat missing header files as generated files and assume they live in the same directory as the source file. It must be specified in addition to _M.
This feature is used in automatic updating of makefiles.
_MM[_MG] Like _M but mention only the files included with #include " file ". System header files included with #include < file > are omitted.
_MDfile Like _M but the dependency information is written to file. This is in addition to compiling the file as specified. _MD does not inhibit ordinary compilation the way _M does.
When invoking gcc, do not specify the file argument. gcc will create filenames made by replacing .c with .d at the end of the input filenames.
In Mach, you can use the utility md to merge multiple files into a single dependency file suitable for using with the make command.
_MMDfile Like _M except mention only user header files, not system header files.
_H Print the name of each header file used, in addition to other normal activities.
_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. The preprocessor evaluates any _D and _U options on the command line before processing _imacros file.
_include file Process file as input, and include all the resulting output, before processing the regular input file.
-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 directory's name is made by concatenating prefix and dir, where prefix was specified previously with _iprefix.
_lang-c Specify the source language. _lang-c++ makes the preprocessor handle C++ comment syntax,
_lang-c++ and includes extra default include directories for C++, and _lang-objc enables the Objective C
_lang-objc #import directive. _lang-c explicitly turns off both of these extensions, and _lang-objc++ enables
_lang-objc++ both. These options are generated by the compiler driver gcc, but not passed from the gcc command line.
_lint Look for commands to the program checker lint embedded in comments, and emit them preceded by #pragma lint. For example, the comment /* NOTREACHED */ becomes #pragma lint NOTREACHED.

This option is available only when you call cpp directly; gcc will not pass it from its command line.

Previous | Table of Contents | Next