2000-12-19 Benjamin Kosnik <bkoz@redhat.com>
[official-gcc.git] / gcc / cpp.1
blob4c6da5fc06cfdd6c0c386a891ec12942dfdbdf61
1 .rn '' }`
2 .de Sh
3 .br
4 .if t .Sp
5 .ne 5
6 .PP
7 \fB\\$1\fR
8 .PP
9 ..
10 .de Sp
11 .if t .sp .5v
12 .if n .sp
14 .de Ip
15 .br
16 .ie \\n(.$>=3 .ne \\$3
17 .el .ne 3
18 .IP "\\$1" \\$2
20 .de Vb
21 .ft CW
22 .nf
23 .ne \\$1
25 .de Ve
26 .ft R
28 .fi
30 '''
31 '''
32 '''     Set up \*(-- to give an unbreakable dash;
33 '''     string Tr holds user defined translation string.
34 '''     Bell System Logo is used as a dummy character.
35 '''
36 .tr \(*W-|\(bv\*(Tr
37 .ie n \{\
38 .ds -- \(*W-
39 .ds PI pi
40 .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
41 .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
42 .ds L" ""
43 .ds R" ""
44 '''   \*(M", \*(S", \*(N" and \*(T" are the equivalent of
45 '''   \*(L" and \*(R", except that they are used on ".xx" lines,
46 '''   such as .IP and .SH, which do another additional levels of
47 '''   double-quote interpretation
48 .ds M" """
49 .ds S" """
50 .ds N" """""
51 .ds T" """""
52 .ds L' '
53 .ds R' '
54 .ds M' '
55 .ds S' '
56 .ds N' '
57 .ds T' '
58 'br\}
59 .el\{\
60 .ds -- \(em\|
61 .tr \*(Tr
62 .ds L" ``
63 .ds R" ''
64 .ds M" ``
65 .ds S" ''
66 .ds N" ``
67 .ds T" ''
68 .ds L' `
69 .ds R' '
70 .ds M' `
71 .ds S' '
72 .ds N' `
73 .ds T' '
74 .ds PI \(*p
75 'br\}
76 .TH CPP 1 "gcc-3.0" "1/Aug/2000" "GNU"
77 .UC
78 .if n .hy 0
79 .if n .na
80 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
81 .de CQ          \" put $1 in typewriter font
82 .ft CW
83 'if n "\c
84 'if t \\&\\$1\c
85 'if n \\&\\$1\c
86 'if n \&"
87 \\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
88 '.ft R
90 .\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
91 .       \" AM - accent mark definitions
92 .bd B 3
93 .       \" fudge factors for nroff and troff
94 .if n \{\
95 .       ds #H 0
96 .       ds #V .8m
97 .       ds #F .3m
98 .       ds #[ \f1
99 .       ds #] \fP
101 .if t \{\
102 .       ds #H ((1u-(\\\\n(.fu%2u))*.13m)
103 .       ds #V .6m
104 .       ds #F 0
105 .       ds #[ \&
106 .       ds #] \&
108 .       \" simple accents for nroff and troff
109 .if n \{\
110 .       ds ' \&
111 .       ds ` \&
112 .       ds ^ \&
113 .       ds , \&
114 .       ds ~ ~
115 .       ds ? ?
116 .       ds ! !
117 .       ds /
118 .       ds q
120 .if t \{\
121 .       ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
122 .       ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
123 .       ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
124 .       ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
125 .       ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
126 .       ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
127 .       ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
128 .       ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
129 .       ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
131 .       \" troff and (daisy-wheel) nroff accents
132 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
133 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
134 .ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
135 .ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
136 .ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
137 .ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
138 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
139 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
140 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
141 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
142 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
143 .ds ae a\h'-(\w'a'u*4/10)'e
144 .ds Ae A\h'-(\w'A'u*4/10)'E
145 .ds oe o\h'-(\w'o'u*4/10)'e
146 .ds Oe O\h'-(\w'O'u*4/10)'E
147 .       \" corrections for vroff
148 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
149 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
150 .       \" for low resolution devices (crt and lpr)
151 .if \n(.H>23 .if \n(.V>19 \
153 .       ds : e
154 .       ds 8 ss
155 .       ds v \h'-1'\o'\(aa\(ga'
156 .       ds _ \h'-1'^
157 .       ds . \h'-1'.
158 .       ds 3 3
159 .       ds o a
160 .       ds d- d\h'-1'\(ga
161 .       ds D- D\h'-1'\(hy
162 .       ds th \o'bp'
163 .       ds Th \o'LP'
164 .       ds ae ae
165 .       ds Ae AE
166 .       ds oe oe
167 .       ds Oe OE
169 .rm #[ #] #H #V #F C
170 .SH "NAME"
171 cpp \- The C Preprocessor
172 .SH "SYNOPSIS"
173 cpp [\fB\-P\fR] [\fB\-C\fR] [\fB\-gcc\fR] [\fB\-traditional\fR]
174     [\fB\-undef\fR] [\fB\-trigraphs\fR] [\fB\-pedantic\fR]
175     [\fB\-W\fR\fIwarn\fR...] [\fB\-I\fR\fIdir\fR...]
176     [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
177     [\fB\-A\fR\fIpredicate\fR(\fIanswer\fR)]
178     [\fB\-M\fR|\fB\-MM\fR|\fB\-MD\fR|\fB\-MMD\fR [\fB\-MG\fR]]
179     [\fB\-x\fR \fIlanguage\fR] [\fB\-std=\fR\fIstandard\fR]
180     \fIinfile\fR \fIoutfile\fR
182 Only the most useful options are listed here; see below for the remainder.
183 .SH "DESCRIPTION"
184 The C preprocessor is a \fImacro processor\fR that is used automatically
185 by the C compiler to transform your program before actual compilation.
186 It is called a macro processor because it allows you to define
187 \fImacros\fR, which are brief abbreviations for longer constructs.
189 The C preprocessor is intended only for macro processing of C, \*(C+ and
190 Objective C source files.  For macro processing of other files, you are
191 strongly encouraged to use alternatives like M4, which will likely give
192 you better results and avoid many problems.  For example, normally the C
193 preprocessor does not preserve arbitrary whitespace verbatim, but
194 instead replaces each sequence with a single space.
196 For use on C\-like source files, the C preprocessor provides four
197 separate facilities that you can use as you see fit:
198 .Ip "\(bu" 4
199 Inclusion of header files.  These are files of declarations that can be
200 substituted into your program.
201 .Ip "\(bu" 4
202 Macro expansion.  You can define \fImacros\fR, which are abbreviations
203 for arbitrary fragments of C code, and then the C preprocessor will
204 replace the macros with their definitions throughout the program.
205 .Ip "\(bu" 4
206 Conditional compilation.  Using special preprocessing directives, you
207 can include or exclude parts of the program according to various
208 conditions.
209 .Ip "\(bu" 4
210 Line control.  If you use a program to combine or rearrange source files
211 into an intermediate file which is then compiled, you can use line
212 control to inform the compiler of where each source line originally came
213 from.
215 C preprocessors vary in some details.  This manual discusses the \s-1GNU\s0 C
216 preprocessor, which provides a small superset of the features of \s-1ISO\s0
217 Standard C.
219 In its default mode, the \s-1GNU\s0 C preprocessor does not do a few things
220 required by the standard.  These are features which are rarely, if ever,
221 used, and may cause surprising changes to the meaning of a program which
222 does not expect them.  To get strict \s-1ISO\s0 Standard C, you should use the
223 \fB\-std=c89\fR or \fB\-std=c99\fR options, depending on which version
224 of the standard you want.  To get all the mandatory diagnostics, you
225 must also use \fB\-pedantic\fR.  
226 .SH "OPTIONS"
227 The C preprocessor expects two file names as arguments, \fIinfile\fR and
228 \fIoutfile\fR.  The preprocessor reads \fIinfile\fR together with any
229 other files it specifies with \fB#include\fR.  All the output generated
230 by the combined input files is written in \fIoutfile\fR.
232 Either \fIinfile\fR or \fIoutfile\fR may be \fB\-\fR, which as
233 \fIinfile\fR means to read from standard input and as \fIoutfile\fR
234 means to write to standard output.  Also, if either file is omitted, it
235 means the same as if \fB\-\fR had been specified for that file.
237 Here is a table of command options accepted by the C preprocessor.
238 These options can also be given when compiling a C program; they are
239 passed along automatically to the preprocessor when it is invoked by the
240 compiler.
241 .Ip "\fB\-P\fR" 4
242 Inhibit generation of \fB#\fR\-lines with line-number information in the
243 output from the preprocessor.  This might be useful when running the
244 preprocessor on something that is not C code and will be sent to a
245 program which might be confused by the \fB#\fR\-lines.  
246 .Ip "\fB\-C\fR" 4
247 Do not discard comments.  All comments are passed through to the output
248 file, except for comments in processed directives, which are deleted
249 along with the directive.  Comments appearing in the expansion list of a
250 macro will be preserved, and appear in place wherever the macro is
251 invoked.
253 You should be prepared for side effects when using \fB\-C\fR; it causes
254 the preprocessor to treat comments as tokens in their own right.  For
255 example, macro redefinitions that were trivial when comments were
256 replaced by a single space might become significant when comments are
257 retained.  Also, comments appearing at the start of what would be a
258 directive line have the effect of turning that line into an ordinary
259 source line, since the first token on the line is no longer a \fB#\fR.
260 .Ip "\fB\-traditional\fR" 4
261 Try to imitate the behavior of old-fashioned C, as opposed to \s-1ISO\s0 C.
262 .RS 4
263 .Ip "\(bu" 4
264 Traditional macro expansion pays no attention to single-quote or
265 double-quote characters; macro argument symbols are replaced by the
266 argument values even when they appear within apparent string or
267 character constants.
268 .Ip "\(bu" 4
269 Traditionally, it is permissible for a macro expansion to end in the
270 middle of a string or character constant.  The constant continues into
271 the text surrounding the macro call.
272 .Ip "\(bu" 4
273 However, traditionally the end of the line terminates a string or
274 character constant, with no error.
275 .Ip "\(bu" 4
276 In traditional C, a comment is equivalent to no text at all.  (In \s-1ISO\s0
277 C, a comment counts as whitespace.)
278 .Ip "\(bu" 4
279 Traditional C does not have the concept of a ``preprocessing number'\*(R'.
280 It considers \fB1.0e+4\fR to be three tokens: \fB1.0e\fR, \fB+\fR,
281 and \fB4\fR.
282 .Ip "\(bu" 4
283 A macro is not suppressed within its own definition, in traditional C.
284 Thus, any macro that is used recursively inevitably causes an error.
285 .Ip "\(bu" 4
286 The character \fB#\fR has no special meaning within a macro definition
287 in traditional C.
288 .Ip "\(bu" 4
289 In traditional C, the text at the end of a macro expansion can run
290 together with the text after the macro call, to produce a single token.
291 (This is impossible in \s-1ISO\s0 C.)
292 .Ip "\(bu" 4
293 None of the \s-1GNU\s0 extensions to the preprocessor are available in
294 \fB\-traditional\fR mode.
296 .Ip "" 4
297 Use the \fB\-traditional\fR option when preprocessing Fortran code, so
298 that single-quotes and double-quotes within Fortran comment lines (which
299 are generally not recognized as such by the preprocessor) do not cause
300 diagnostics about unterminated character or string constants.
302 However, this option does not prevent diagnostics about unterminated
303 comments when a C\-style comment appears to start, but not end, within
304 Fortran-style commentary.
306 So, the following Fortran comment lines are accepted with
307 \fB\-traditional\fR:
309 .Vb 3
310 \&        C This isn't an unterminated character constant
311 \&        C Neither is "20000000000, an octal constant
312 \&        C in some dialects of Fortran
314 However, this type of comment line will likely produce a diagnostic, or
315 at least unexpected output from the preprocessor, due to the
316 unterminated comment:
318 .Vb 2
319 \&        C Some Fortran compilers accept /* as starting
320 \&        C an inline comment.
322 Note that \f(CWg77\fR automatically supplies the \fB\-traditional\fR
323 option when it invokes the preprocessor.  However, a future version of
324 \f(CWg77\fR might use a different, more-Fortran-aware preprocessor in
325 place of \f(CWcpp\fR.
326 .Ip "\fB\-trigraphs\fR" 4
327 Process \s-1ISO\s0 standard trigraph sequences.  These are three-character
328 sequences, all starting with \fB??\fR, that are defined by \s-1ISO\s0 C to
329 stand for single characters.  For example, \fB??/\fR stands for
330 \fB\e\fR, so \fB\*(R'??/n\*(R'\fR is a character constant for a newline.  By
331 default, \s-1GCC\s0 ignores trigraphs, but in standard-conforming modes it
332 converts them.  See the \fB\-std\fR option.
334 The nine trigraph sequences are
335 .RS 4
336 .PD 0
338 .Ip "\fB??(\fR" 6
339 ->      \fB[\fR
340 .Ip "\fB??)\fR" 6
341 ->      \fB]\fR
342 .Ip "\fB??<\fR" 6
343 ->      \fB@{\fR
344 .Ip "\fB??>\fR" 6
345 ->      \fB@\fR}
346 .Ip "\fB??=\fR" 6
347 ->      \fB#\fR
348 .Ip "\fB??/\fR" 6
349 ->      \fB\e\fR
350 .Ip "\fB??\*(T'\fR" 6
351 ->      \fB^\fR
352 .Ip "\fB??!\fR" 6
353 ->      \fB|\fR
354 .Ip "\fB??\-\fR" 6
355 ->      \fB~\fR
358 .Ip "" 4
359 Trigraph support is not popular, so many compilers do not implement it
360 properly.  Portable code should not rely on trigraphs being either
361 converted or ignored.
362 .Ip "\fB\-pedantic\fR" 4
363 Issue warnings required by the \s-1ISO\s0 C standard in certain cases such
364 as when text other than a comment follows \fB#else\fR or \fB#endif\fR.
365 .Ip "\fB\-pedantic-errors\fR" 4
366 Like \fB\-pedantic\fR, except that errors are produced rather than
367 warnings.
368 .Ip "\fB\-Wcomment\fR" 4
369 .Ip "\fB\-Wcomments\fR" 4
370 (Both forms have the same effect).
371 Warn whenever a comment-start sequence \fB/*\fR appears in a \fB/*\fR
372 comment, or whenever a backslash-newline appears in a \fB//\fR comment.
373 .Ip "\fB\-Wtrigraphs\fR" 4
374 Warn if any trigraphs are encountered.  This option used to take effect
375 only if \fB\-trigraphs\fR was also specified, but now works independently.
376 .Ip "\fB\-Wwhite-space\fR" 4
377 Warn about possible white space confusion, e.g. white space between a
378 backslash and a newline.
379 .Ip "\fB\-Wall\fR" 4
380 Requests \fB\-Wcomment\fR, \fB\-Wtrigraphs\fR, and \fB\-Wwhite-space\fR
381 (but not \fB\-Wtraditional\fR or \fB\-Wundef\fR).
382 .Ip "\fB\-Wtraditional\fR" 4
383 Warn about certain constructs that behave differently in traditional and
384 \s-1ISO\s0 C.
385 .Ip "\fB\-Wundef\fR" 4
386 Warn if an undefined identifier is evaluated in an \fB#if\fR directive.
387 .Ip "\fB\-I \fIdirectory\fR\fR" 4
388 Add the directory \fIdirectory\fR to the head of the list of
389 directories to be searched for header files 
390 This can be used to override a system header file, substituting your
391 own version, since these directories are searched before the system
392 header file directories.  If you use more than one \fB\-I\fR option,
393 the directories are scanned in left-to-right order; the standard
394 system directories come after.
395 .Ip "\fB\-I-\fR" 4
396 Any directories specified with \fB\-I\fR options before the \fB\-I-\fR
397 option are searched only for the case of \fB#include \*(L"\fIfile\fR\*(R"\fR;
398 they are not searched for \fB#include <\fIfile\fR>\fR.
400 If additional directories are specified with \fB\-I\fR options after
401 the \fB\-I-\fR, these directories are searched for all \fB#include\fR
402 directives.
404 In addition, the \fB\-I-\fR option inhibits the use of the current
405 directory as the first search directory for \fB#include \*(L"\fIfile\fR\*(R"\fR.
406 Therefore, the current directory is searched only if it is requested
407 explicitly with \fB\-I.\fR.  Specifying both \fB\-I-\fR and \fB\-I.\fR
408 allows you to control precisely which directories are searched before
409 the current one and which are searched after.
410 .Ip "\fB\-nostdinc\fR" 4
411 Do not search the standard system directories for header files.
412 Only the directories you have specified with \fB\-I\fR options
413 (and the current directory, if appropriate) are searched.
414 .Ip "\fB\-nostdinc++\fR" 4
415 Do not search for header files in the \*(C+\-specific standard directories,
416 but do still search the other standard directories.  (This option is
417 used when building the \*(C+ library.)
418 .Ip "\fB\-remap\fR" 4
419 When searching for a header file in a directory, remap file names if a
420 file named \fIheader.gcc\fR exists in that directory.  This can be used
421 to work around limitations of file systems with file name restrictions.
422 The \fIheader.gcc\fR file should contain a series of lines with two
423 tokens on each line: the first token is the name to map, and the second
424 token is the actual name to use.
425 .Ip "\fB\-D \fIname\fR\fR" 4
426 Predefine \fIname\fR as a macro, with definition \fB1\fR.
427 .Ip "\fB\-D \fIname\fR=\fIdefinition\fR\fR" 4
428 Predefine \fIname\fR as a macro, with definition \fIdefinition\fR.
429 There are no restrictions on the contents of \fIdefinition\fR, but if
430 you are invoking the preprocessor from a shell or shell-like program you
431 may need to use the shell's quoting syntax to protect characters such as
432 spaces that have a meaning in the shell syntax.  If you use more than
433 one \fB\-D\fR for the same \fIname\fR, the rightmost definition takes
434 effect.
435 .Ip "\fB\-U \fIname\fR\fR" 4
436 Do not predefine \fIname\fR.  If both \fB\-U\fR and \fB\-D\fR are
437 specified for one name, whichever one appears later on the command line
438 wins.
439 .Ip "\fB\-undef\fR" 4
440 Do not predefine any nonstandard macros.
441 .Ip "\fB\-gcc\fR" 4
442 Define the macros \fI_\|_GNUC_\|_\fR, \fI_\|_GNUC_MINOR_\|_\fR and
443 \fI_\|_GNUC_PATCHLEVEL_\|_\fR. These are defined automatically when you use
444 \fBgcc \-E\fR; you can turn them off in that case with \fB\-no-gcc\fR.
445 .Ip "\fB\-A \fIpredicate\fR(\fIanswer\fR)\fR" 4
446 Make an assertion with the predicate \fIpredicate\fR and answer
447 \fIanswer\fR.  
448 .Ip "\fB\-A \-\fIpredicate\fR(\fIanswer\fR)\fR" 4
449 Disable an assertion with the predicate \fIpredicate\fR and answer
450 \fIanswer\fR.  Specifying no predicate, by \fB\-A-\fR or \fB\-A \-\fR,
451 disables all predefined assertions and all assertions preceding it on
452 the command line; and also undefines all predefined macros and all
453 macros preceding it on the command line.
454 .Ip "\fB\-dM\fR" 4
455 Instead of outputting the result of preprocessing, output a list of
456 \fB#define\fR directives for all the macros defined during the
457 execution of the preprocessor, including predefined macros.  This gives
458 you a way of finding out what is predefined in your version of the
459 preprocessor; assuming you have no file \fBfoo.h\fR, the command
461 .Vb 1
462 \&        touch foo.h; cpp -dM foo.h
464 will show the values of any predefined macros.
465 .Ip "\fB\-dD\fR" 4
466 Like \fB\-dM\fR except in two respects: it does \fInot\fR include the
467 predefined macros, and it outputs \fIboth\fR the \fB#define\fR
468 directives and the result of preprocessing.  Both kinds of output go to
469 the standard output file.
470 .Ip "\fB\-dN\fR" 4
471 Like \fB\-dD\fR, but emit only the macro names, not their expansions.
472 .Ip "\fB\-dI\fR" 4
473 Output \fB#include\fR directives in addition to the result of
474 preprocessing.
475 .Ip "\fB\-M [\-\s-1MG\s0]\fR" 4
476 Instead of outputting the result of preprocessing, output a rule
477 suitable for \f(CWmake\fR describing the dependencies of the main source
478 file.  The preprocessor outputs one \f(CWmake\fR rule containing the
479 object file name for that source file, a colon, and the names of all the
480 included files.  If there are many included files then the rule is split
481 into several lines using \fB\e\fR\-newline.
483 \fB\-\s-1MG\s0\fR says to treat missing header files as generated files and
484 assume they live in the same directory as the source file.  It must be
485 specified in addition to \fB\-M\fR.
487 This feature is used in automatic updating of makefiles.
488 .Ip "\fB\-\s-1MM\s0 [\-\s-1MG\s0]\fR" 4
489 Like \fB\-M\fR but mention only the files included with \fB#include
490 \*(L"\fIfile\fR\*(R"\fR.  System header files included with \fB#include
491 <\fIfile\fR>\fR are omitted.
492 .Ip "\fB\-\s-1MD\s0 \fIfile\fR\fR" 4
493 Like \fB\-M\fR but the dependency information is written to \fIfile\fR.
494 This is in addition to compiling the file as specified --- \fB\-\s-1MD\s0\fR
495 does not inhibit ordinary compilation the way \fB\-M\fR does.
497 When invoking \f(CWgcc\fR, do not specify the \fIfile\fR argument.
498 \f(CWgcc\fR will create file names made by replacing \*(L".c\*(R" with \*(L".d\*(R" at
499 the end of the input file names.
501 In Mach, you can use the utility \f(CWmd\fR to merge multiple dependency
502 files into a single dependency file suitable for using with the
503 \fBmake\fR command.
504 .Ip "\fB\-\s-1MMD\s0 \fIfile\fR\fR" 4
505 Like \fB\-\s-1MD\s0\fR except mention only user header files, not system
506 header files.
507 .Ip "\fB\-H\fR" 4
508 Print the name of each header file used, in addition to other normal
509 activities.
510 .Ip "\fB\-imacros \fIfile\fR\fR" 4
511 Process \fIfile\fR as input, discarding the resulting output, before
512 processing the regular input file.  Because the output generated from
513 \fIfile\fR is discarded, the only effect of \fB\-imacros \fIfile\fR\fR
514 is to make the macros defined in \fIfile\fR available for use in the
515 main input.
516 .Ip "\fB\-include \fIfile\fR\fR" 4
517 Process \fIfile\fR as input, and include all the resulting output,
518 before processing the regular input file.  
519 .Ip "\fB\-idirafter \fIdir\fR\fR" 4
520 Add the directory \fIdir\fR to the second include path.  The directories
521 on the second include path are searched when a header file is not found
522 in any of the directories in the main include path (the one that
523 \fB\-I\fR adds to).
524 .Ip "\fB\-iprefix \fIprefix\fR\fR" 4
525 Specify \fIprefix\fR as the prefix for subsequent \fB\-iwithprefix\fR
526 options.  If the prefix represents a directory, you should include the
527 final \fB/\fR.
528 .Ip "\fB\-iwithprefix \fIdir\fR\fR" 4
529 Add a directory to the second include path.  The directory's name is
530 made by concatenating \fIprefix\fR and \fIdir\fR, where \fIprefix\fR was
531 specified previously with \fB\-iprefix\fR.
532 .Ip "\fB\-isystem \fIdir\fR\fR" 4
533 Add a directory to the beginning of the second include path, marking it
534 as a system directory, so that it gets the same special treatment as
535 is applied to the standard system directories.  
536 .Ip "\fB\-x c\fR" 4
537 .Ip "\fB\-x c++\fR" 4
538 .Ip "\fB\-x objective-c\fR" 4
539 .Ip "\fB\-x assembler-with-cpp\fR" 4
540 Specify the source language: C, \*(C+, Objective-C, or assembly.  This has
541 nothing to do with standards conformance or extensions; it merely
542 selects which base syntax to expect.  If you give none of these options,
543 cpp will deduce the language from the extension of the source file:
544 \&\fB.c\fR, \fB.cc\fR, \fB.m\fR, or \fB.S\fR.  Some other common
545 extensions for \*(C+ and assembly are also recognized.  If cpp does not
546 recognize the extension, it will treat the file as C; this is the most
547 generic mode.
549 \fBNote:\fR Previous versions of cpp accepted a \fB\-lang\fR option
550 which selected both the language and the standards conformance level.
551 This option has been removed, because it conflicts with the \fB\-l\fR
552 option.
553 .Ip "\fB\-std=\fIstandard\fR\fR" 4
554 .Ip "\fB\-ansi\fR" 4
555 Specify the standard to which the code should conform.  Currently cpp
556 only knows about the standards for C; other language standards will be
557 added in the future.
559 \fIstandard\fR
560 may be one of:
561 .RS 4
562 .PD 0
564 .Ip "\f(CWiso9899:1990\fR" 4
565 .Ip "\f(CWc89\fR" 4
567 The \s-1ISO\s0 C standard from 1990.  \fBc89\fR is the customary shorthand for
568 this version of the standard.
570 The \fB\-ansi\fR option is equivalent to \fB\-std=c89\fR.
572 .Ip "\f(CWiso9899:199409\fR" 4
573 The 1990 C standard, as amended in 1994.
575 .Ip "\f(CWiso9899:1999\fR" 4
576 .Ip "\f(CWc99\fR" 4
577 .Ip "\f(CWiso9899:199x\fR" 4
578 .Ip "\f(CWc9x\fR" 4
580 The revised \s-1ISO\s0 C standard, published in December 1999.  Before
581 publication, this was known as C9X.
583 .Ip "\f(CWgnu89\fR" 4
584 The 1990 C standard plus \s-1GNU\s0 extensions.  This is the default.
586 .Ip "\f(CWgnu99\fR" 4
587 .Ip "\f(CWgnu9x\fR" 4
588 The 1999 C standard plus \s-1GNU\s0 extensions.
591 .Ip "\fB\-ftabstop=\s-1NUMBER\s0\fR" 4
592 Set the distance between tabstops.  This helps the preprocessor
593 report correct column numbers in warnings or errors, even if tabs appear
594 on the line.  Values less than 1 or greater than 100 are ignored.  The
595 default is 8.
596 .Ip "\fB\-$\fR" 4
597 Forbid the use of \fB$\fR in identifiers.  The C standard allows
598 implementations to define extra characters that can appear in
599 identifiers.  By default the \s-1GNU\s0 C preprocessor permits \fB$\fR, a
600 common extension.
601 .SH "SEE ALSO"
602 \fIgcc\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), and the Info entries for \fIcpp\fR, \fIgcc\fR, and
603 \fIbinutils\fR.
604 .SH "COPYRIGHT"
605 Copyright  1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
606 1997, 1998, 1999, 2000
607 Free Software Foundation, Inc.
609 Permission is granted to make and distribute verbatim copies of
610 this manual provided the copyright notice and this permission notice
611 are preserved on all copies.
613 Permission is granted to copy and distribute modified versions of this
614 manual under the conditions for verbatim copying, provided also that
615 the entire resulting derived work is distributed under the terms of a
616 permission notice identical to this one.
618 Permission is granted to copy and distribute translations of this manual
619 into another language, under the above conditions for modified versions.