-->
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.