Products
and Services Support
and Docs Training Partner Programs About Red
Hat
  download storecart
red hat logo
redhat.comredhat network

Red Hat Documentation

Options Controlling the Preprocessor 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 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.
       
    -iwithprefixbefore dir
      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.
       
    -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.

Top|Contents|Index|Previous|Next

 

 


 
© 2001 Red Hat, Inc. All rights reserved.
About Red Hat  :  Legal statement  :  Privacy statement  :  Y2K statement  :  Contact Red Hat