.\" Automatically generated by Pod::Man version 1.16
-.\" Sat Jun 16 00:25:57 2001
+.\" Sat Jun 16 11:46:14 2001
.\"
.\" Standard preamble:
.\" ======================================================================
means to write to standard output. Also, if either file is omitted, it
means the same as if \fB-\fR had been specified for that file.
.PP
-All single-letter options which take an argument may have that argument
-appear immediately after the option letter, or with a space between
-option and argument: \fB\-Ifoo\fR and \fB\-I foo\fR have the same
-effect.
+Unless otherwise noted, or the option ends in \fB=\fR, all options
+which take an argument may have that argument appear either immediately
+after the option, or with a space between option and argument:
+\&\fB\-Ifoo\fR and \fB\-I foo\fR have the same effect.
+.PP
+Many options have multi-letter names; therefore multiple single-letter
+options may \fInot\fR be grouped: \fB\-dM\fR is very different from
+\&\fB\-d\ \-M\fR.
.Ip "\fB\-D\fR \fIname\fR" 4
.IX Item "-D name"
Predefine \fIname\fR as a macro, with definition \f(CW\*(C`1\*(C'\fR.
the command line. Also, undefine all predefined macros and all
macros preceding it on the command line. (This is a historical wart and
may change in the future.)
-.Ip "\fB\-dM\fR" 4
-.IX Item "-dM"
+.Ip "\fB\-dCHARS\fR" 4
+.IX Item "-dCHARS"
+\&\fI\s-1CHARS\s0\fR is a sequence of one or more of the following characters,
+and must not be preceded by a space. Other characters are reserved for
+future versions of \s-1GCC\s0, and silently ignored. If you specify characters
+whose behavior conflicts, the result is undefined.
+.RS 4
+.Ip "\fBM\fR" 4
+.IX Item "M"
Instead of the normal output, generate a list of \fB#define\fR
directives for all the macros defined during the execution of the
preprocessor, including predefined macros. This gives you a way of
\& touch foo.h; cpp -dM foo.h
.Ve
will show all the predefined macros.
-.Ip "\fB\-dD\fR" 4
-.IX Item "-dD"
-Like \fB\-dM\fR except in two respects: it does \fInot\fR include the
+.Ip "\fBD\fR" 4
+.IX Item "D"
+Like \fBM\fR except in two respects: it does \fInot\fR include the
predefined macros, and it outputs \fIboth\fR the \fB#define\fR
directives and the result of preprocessing. Both kinds of output go to
the standard output file.
-.Ip "\fB\-dN\fR" 4
-.IX Item "-dN"
-Like \fB\-dD\fR, but emit only the macro names, not their expansions.
-.Ip "\fB\-dI\fR" 4
-.IX Item "-dI"
+.Ip "\fBN\fR" 4
+.IX Item "N"
+Like \fBD\fR, but emit only the macro names, not their expansions.
+.Ip "\fBI\fR" 4
+.IX Item "I"
Output \fB#include\fR directives in addition to the result of
preprocessing.
+.RE
+.RS 4
+.RE
.Ip "\fB\-P\fR" 4
.IX Item "-P"
Inhibit generation of linemarkers in the output from the preprocessor.
standard. To minimize the risk of different compilers interpreting your
computed includes differently, we recommend you use only a single
object-like macro which expands to a string constant. This will also
-minimize any confusion to people reading your program.
+minimize confusion for people reading your program.
@node Wrapper Headers
@section Wrapper Headers
@expansion{} fprintf(stderr, "success!\n", );
@end example
-GNU CPP has a pair of extensions which deals with this problem. First,
+GNU CPP has a pair of extensions which deal with this problem. First,
you are allowed to leave the variable argument out entirely:
@example
@item __STRICT_ANSI__
GCC defines this macro if and only if the @option{-ansi} switch, or a
@option{-std} switch specifying strict conformance to some version of ISO C,
-was specified when GCC was invoked. Its definition is the null string.
+was specified when GCC was invoked. It is defined to @samp{1}.
This macro exists primarily to direct GNU libc's header files to
restrict their definitions to the minimal set found in the 1989 C
standard.
@samp{#line} directives into the output file. @samp{#line} is a
directive that specifies the original line number and source file name
for subsequent input in the current preprocessor input file.
-@samp{#line} has four variants:
+@samp{#line} has three variants:
@table @code
@item #line @var{linenum}
-@var{linenum} is a decimal integer constant. It specifies the line
-number which should be reported for the following line of input.
-Subsequent lines are counted from @var{linenum}.
+@var{linenum} is a non-negative decimal integer constant. It specifies
+the line number which should be reported for the following line of
+input. Subsequent lines are counted from @var{linenum}.
@item #line @var{linenum} @var{filename}
@var{linenum} is the same as for the first form, and has the same
@item #line @var{anything else}
@var{anything else} is checked for macro calls, which are expanded.
-The result should match one of the above three forms.
-
-@item # @var{linenum} @var{filename} @var{flags@dots{}}
-This form is a GCC extension. @var{linenum} and @var{filename} are the
-same as the second form. The @var{flags} are small increasing positive
-integers, which have the same meaning as the flags which can appear at
-the end of a linemarker in the preprocessor's output.
-@xref{Preprocessor Output}. Note that this form does not use the
-directive name @samp{line}.
+The result should match one of the above two forms.
@end table
@samp{#line} directives alter the results of the @code{__FILE__} and
@c maybe cross reference NO_IMPLICIT_EXTERN_C
@end table
+As an extension, the preprocessor accepts linemarkers in non-assembler
+input files. They are treated like the corresponding @samp{#line}
+directive, (@pxref{Line Control}), except that trailing flags are
+permitted, and are interpreted with the meanings described above. If
+multiple flags are given, they must be in ascending order.
+
Some directives may be duplicated in the output of the preprocessor.
These are @samp{#ident} (always), @samp{#pragma} (only if the
preprocessor does not handle the pragma itself), and @samp{#define} and
means to write to standard output. Also, if either file is omitted, it
means the same as if @option{-} had been specified for that file.
-All single-letter options which take an argument may have that argument
-appear immediately after the option letter, or with a space between
-option and argument: @option{-Ifoo} and @option{-I foo} have the same
-effect.
+Unless otherwise noted, or the option ends in @samp{=}, all options
+which take an argument may have that argument appear either immediately
+after the option, or with a space between option and argument:
+@option{-Ifoo} and @option{-I foo} have the same effect.
+
+@cindex grouping options
+@cindex options, grouping
+Many options have multi-letter names; therefore multiple single-letter
+options may @emph{not} be grouped: @option{-dM} is very different from
+@w{@samp{-d -M}}.
@cindex options
@table @gcctabopt
macros preceding it on the command line. (This is a historical wart and
may change in the future.)
-@item -dM
+@item -dCHARS
+@var{CHARS} is a sequence of one or more of the following characters,
+and must not be preceded by a space. Other characters are interpreted
+by the compiler proper, or reserved for future versions of GCC, and so
+are silently ignored. If you specify characters whose behavior
+conflicts, the result is undefined.
+
+@table @samp
+@item M
Instead of the normal output, generate a list of @samp{#define}
directives for all the macros defined during the execution of the
preprocessor, including predefined macros. This gives you a way of
@noindent
will show all the predefined macros.
-@item -dD
-Like @option{-dM} except in two respects: it does @emph{not} include the
+@item D
+Like @samp{M} except in two respects: it does @emph{not} include the
predefined macros, and it outputs @emph{both} the @samp{#define}
directives and the result of preprocessing. Both kinds of output go to
the standard output file.
-@item -dN
-Like @option{-dD}, but emit only the macro names, not their expansions.
+@item N
+Like @samp{D}, but emit only the macro names, not their expansions.
-@item -dI
+@item I
Output @samp{#include} directives in addition to the result of
preprocessing.
+@end table
@item -P
Inhibit generation of linemarkers in the output from the preprocessor.
.\" Automatically generated by Pod::Man version 1.16
-.\" Thu Jun 14 22:41:32 2001
+.\" Sat Jun 16 09:19:37 2001
.\"
.\" Standard preamble:
.\" ======================================================================
.\" ======================================================================
.\"
.IX Title "GCC 1"
-.TH GCC 1 "gcc-3.1" "2001-06-14" "GNU"
+.TH GCC 1 "gcc-3.1" "2001-06-16" "GNU"
.UC
.SH "NAME"
gcc \- \s-1GNU\s0 project C and \*(C+ compiler
Indicate to the preprocessor that the input file has already been
preprocessed. This suppresses things like macro expansion, trigraph
conversion, escaped newline splicing, and processing of most directives.
-In this mode the integrated preprocessor is little more than a tokenizer
-for the front ends.
+The preprocessor still recognizes and removes comments, so that you can
+pass a file preprocessed with \fB\-C\fR to the compiler without
+problems. In this mode the integrated preprocessor is little more than
+a tokenizer for the front ends.
.Sp
\&\fB\-fpreprocessed\fR is implicit if the input file has one of the
-extensions \fBi\fR, \fBii\fR or \fBmi\fR indicating it has already
-been preprocessed.
+extensions \fBi\fR, \fBii\fR or \fBmi\fR. These are the extensions
+that \s-1GCC\s0 uses for preprocessed files created by \fB\-save-temps\fR.
.Ip "\fB\-trigraphs\fR" 4
.IX Item "-trigraphs"
Process \s-1ISO\s0 standard trigraph sequences. These are three-character