cpp.texi revision 90075
1\input texinfo
2@setfilename cpp.info
3@settitle The C Preprocessor
4@setchapternewpage off
5@c @smallbook
6@c @cropmarks
7@c @finalout
8
9@macro copyrightnotice
10@c man begin COPYRIGHT
11Copyright @copyright{} 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
121997, 1998, 1999, 2000, 2001
13Free Software Foundation, Inc.
14
15Permission is granted to copy, distribute and/or modify this document
16under the terms of the GNU Free Documentation License, Version 1.1 or
17any later version published by the Free Software Foundation.  A copy of
18the license is included in the
19@c man end
20section entitled ``GNU Free Documentation License''.
21@ignore
22@c man begin COPYRIGHT
23man page gfdl(7).
24@c man end
25@end ignore
26@end macro
27
28@macro covertexts
29@c man begin COPYRIGHT
30This manual contains no Invariant Sections.  The Front-Cover Texts are
31(a) (see below), and the Back-Cover Texts are (b) (see below).
32
33(a) The FSF's Front-Cover Text is:
34
35     A GNU Manual
36
37(b) The FSF's Back-Cover Text is:
38
39     You have freedom to copy and modify this GNU Manual, like GNU
40     software.  Copies published by the Free Software Foundation raise
41     funds for GNU development.
42@c man end
43@end macro
44
45@macro gcctabopt{body}
46@code{\body\}
47@end macro
48
49@ifinfo
50@dircategory Programming
51@direntry
52* Cpp: (cpp).		       The GNU C preprocessor.
53@end direntry
54@end ifinfo
55
56@titlepage
57@title The C Preprocessor
58@subtitle Last revised April 2001
59@subtitle for GCC version 3
60@author Richard M. Stallman
61@author Zachary Weinberg
62@page
63@c There is a fill at the bottom of the page, so we need a filll to
64@c override it.
65@vskip 0pt plus 1filll
66@copyrightnotice{}
67@covertexts{}
68@end titlepage
69@contents
70@page
71
72@node Top
73@top
74The C preprocessor implements the macro language used to transform C,
75C++, and Objective-C programs before they are compiled.  It can also be
76useful on its own.
77
78@menu
79* Overview::
80* Header Files::
81* Macros::
82* Conditionals::
83* Diagnostics::
84* Line Control::
85* Pragmas::
86* Other Directives::
87* Preprocessor Output::
88* Traditional Mode::
89* Implementation Details::
90* Invocation::
91* GNU Free Documentation License::
92* Index of Directives::
93* Concept Index::
94
95@detailmenu
96 --- The Detailed Node Listing ---
97
98Overview
99
100* Initial processing::
101* Tokenization::
102* The preprocessing language::
103
104Header Files
105
106* Include Syntax::
107* Include Operation::
108* Search Path::
109* Once-Only Headers::
110* Computed Includes::
111* Wrapper Headers::
112* System Headers::
113
114Macros
115
116* Object-like Macros::
117* Function-like Macros::
118* Macro Arguments::
119* Stringification::
120* Concatenation::
121* Variadic Macros::
122* Predefined Macros::
123* Undefining and Redefining Macros::
124* Macro Pitfalls::
125
126Predefined Macros
127
128* Standard Predefined Macros::
129* Common Predefined Macros::
130* System-specific Predefined Macros::
131* C++ Named Operators::
132
133Macro Pitfalls
134
135* Misnesting::
136* Operator Precedence Problems::
137* Swallowing the Semicolon::
138* Duplication of Side Effects::
139* Self-Referential Macros::
140* Argument Prescan::
141* Newlines in Arguments::
142
143Conditionals
144
145* Conditional Uses::
146* Conditional Syntax::
147* Deleted Code::
148
149Conditional Syntax
150
151* Ifdef::
152* If::
153* Defined::
154* Else::
155* Elif::
156
157Implementation Details
158
159* Implementation-defined behavior::
160* Implementation limits::
161* Obsolete Features::
162* Differences from previous versions::
163
164Obsolete Features
165
166* Assertions::
167* Obsolete once-only headers::
168* Miscellaneous obsolete features::
169
170@end detailmenu
171@end menu
172
173@ifnottex
174@copyrightnotice{}
175@covertexts{}
176@end ifnottex
177
178@node Overview
179@chapter Overview
180@c man begin DESCRIPTION
181The C preprocessor, often known as @dfn{cpp}, is a @dfn{macro processor}
182that is used automatically by the C compiler to transform your program
183before compilation.  It is called a macro processor because it allows
184you to define @dfn{macros}, which are brief abbreviations for longer
185constructs.
186
187The C preprocessor is intended to be used only with C, C++, and
188Objective-C source code.  In the past, it has been abused as a general
189text processor.  It will choke on input which does not obey C's lexical
190rules.  For example, apostrophes will be interpreted as the beginning of
191character constants, and cause errors.  Also, you cannot rely on it
192preserving characteristics of the input which are not significant to
193C-family languages.  If a Makefile is preprocessed, all the hard tabs
194will be removed, and the Makefile will not work.
195
196Having said that, you can often get away with using cpp on things which
197are not C@.  Other Algol-ish programming languages are often safe
198(Pascal, Ada, etc.) So is assembly, with caution.  @option{-traditional}
199mode preserves more white space, and is otherwise more permissive.  Many
200of the problems can be avoided by writing C or C++ style comments
201instead of native language comments, and keeping macros simple.
202
203Wherever possible, you should use a preprocessor geared to the language
204you are writing in.  Modern versions of the GNU assembler have macro
205facilities.  Most high level programming languages have their own
206conditional compilation and inclusion mechanism.  If all else fails,
207try a true general text processor, such as GNU M4.
208
209C preprocessors vary in some details.  This manual discusses the GNU C
210preprocessor, which provides a small superset of the features of ISO
211Standard C@.  In its default mode, the GNU C preprocessor does not do a
212few things required by the standard.  These are features which are
213rarely, if ever, used, and may cause surprising changes to the meaning
214of a program which does not expect them.  To get strict ISO Standard C,
215you should use the @option{-std=c89} or @option{-std=c99} options, depending
216on which version of the standard you want.  To get all the mandatory
217diagnostics, you must also use @option{-pedantic}.  @xref{Invocation}.
218@c man end
219
220@menu
221* Initial processing::
222* Tokenization::
223* The preprocessing language::
224@end menu
225
226@node Initial processing
227@section Initial processing
228
229The preprocessor performs a series of textual transformations on its
230input.  These happen before all other processing.  Conceptually, they
231happen in a rigid order, and the entire file is run through each
232transformation before the next one begins.  GNU CPP actually does them
233all at once, for performance reasons.  These transformations correspond
234roughly to the first three ``phases of translation'' described in the C
235standard.
236
237@enumerate
238@item
239@cindex character sets
240@cindex line endings
241The input file is read into memory and broken into lines.
242
243GNU CPP expects its input to be a text file, that is, an unstructured
244stream of ASCII characters, with some characters indicating the end of a
245line of text.  Extended ASCII character sets, such as ISO Latin-1 or
246Unicode encoded in UTF-8, are also acceptable.  Character sets that are
247not strict supersets of seven-bit ASCII will not work.  We plan to add
248complete support for international character sets in a future release.
249
250Different systems use different conventions to indicate the end of a
251line.  GCC accepts the ASCII control sequences @kbd{LF}, @kbd{@w{CR
252LF}}, @kbd{CR}, and @kbd{@w{LF CR}} as end-of-line markers.  The first
253three are the canonical sequences used by Unix, DOS and VMS, and the
254classic Mac OS (before OSX) respectively.  You may therefore safely copy
255source code written on any of those systems to a different one and use
256it without conversion.  (GCC may lose track of the current line number
257if a file doesn't consistently use one convention, as sometimes happens
258when it is edited on computers with different conventions that share a
259network file system.)  @kbd{@w{LF CR}} is included because it has been
260reported as an end-of-line marker under exotic conditions.
261
262If the last line of any input file lacks an end-of-line marker, the end
263of the file is considered to implicitly supply one.  The C standard says
264that this condition provokes undefined behavior, so GCC will emit a
265warning message.
266
267@item
268@cindex trigraphs
269If trigraphs are enabled, they are replaced by their corresponding
270single characters.
271
272These are nine three-character sequences, all starting with @samp{??},
273that are defined by ISO C to stand for single characters.  They permit
274obsolete systems that lack some of C's punctuation to use C@.  For
275example, @samp{??/} stands for @samp{\}, so @t{'??/n'} is a character
276constant for a newline.  By default, GCC ignores trigraphs, but if you
277request a strictly conforming mode with the @option{-std} option, then
278it converts them.
279
280Trigraphs are not popular and many compilers implement them incorrectly.
281Portable code should not rely on trigraphs being either converted or
282ignored.  If you use the @option{-Wall} or @option{-Wtrigraphs} options,
283GCC will warn you when a trigraph would change the meaning of your
284program if it were converted.
285
286In a string constant, you can prevent a sequence of question marks from
287being confused with a trigraph by inserting a backslash between the
288question marks.  @t{"(??\?)"} is the string @samp{(???)}, not
289@samp{(?]}.  Traditional C compilers do not recognize this idiom.
290
291The nine trigraphs and their replacements are
292
293@example
294Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??'  ??!  ??-
295Replacement:      [    ]    @{    @}    #    \    ^    |    ~
296@end example
297
298@item
299@cindex continued lines
300@cindex backslash-newline
301Continued lines are merged into one long line.
302
303A continued line is a line which ends with a backslash, @samp{\}.  The
304backslash is removed and the following line is joined with the current
305one.  No space is inserted, so you may split a line anywhere, even in
306the middle of a word.  (It is generally more readable to split lines
307only at white space.)
308
309The trailing backslash on a continued line is commonly referred to as a
310@dfn{backslash-newline}.
311
312If there is white space between a backslash and the end of a line, that
313is still a continued line.  However, as this is usually the result of an
314editing mistake, and many compilers will not accept it as a continued
315line, GCC will warn you about it.
316
317@item
318@cindex comments
319@cindex line comments
320@cindex block comments
321All comments are replaced with single spaces.
322
323There are two kinds of comments.  @dfn{Block comments} begin with
324@samp{/*} and continue until the next @samp{*/}.  Block comments do not
325nest:
326
327@example
328/* @r{this is} /* @r{one comment} */ @r{text outside comment}
329@end example
330
331@dfn{Line comments} begin with @samp{//} and continue to the end of the
332current line.  Line comments do not nest either, but it does not matter,
333because they would end in the same place anyway.
334
335@example
336// @r{this is} // @r{one comment}
337@r{text outside comment}
338@end example
339@end enumerate
340
341It is safe to put line comments inside block comments, or vice versa.
342
343@example
344@group
345/* @r{block comment}
346   // @r{contains line comment}
347   @r{yet more comment}
348 */ @r{outside comment}
349
350// @r{line comment} /* @r{contains block comment} */
351@end group
352@end example
353
354But beware of commenting out one end of a block comment with a line
355comment.
356
357@example
358@group
359 // @r{l.c.}  /* @r{block comment begins}
360    @r{oops! this isn't a comment anymore} */
361@end group
362@end example
363
364Comments are not recognized within string literals.  @t{@w{"/* blah
365*/"}} is the string constant @samp{@w{/* blah */}}, not an empty string.
366
367Line comments are not in the 1989 edition of the C standard, but they
368are recognized by GCC as an extension.  In C++ and in the 1999 edition
369of the C standard, they are an official part of the language.
370
371Since these transformations happen before all other processing, you can
372split a line mechanically with backslash-newline anywhere.  You can
373comment out the end of a line.  You can continue a line comment onto the
374next line with backslash-newline.  You can even split @samp{/*},
375@samp{*/}, and @samp{//} onto multiple lines with backslash-newline.
376For example:
377
378@example
379@group
380/\
381*
382*/ # /*
383*/ defi\
384ne FO\
385O 10\
38620
387@end group
388@end example
389
390@noindent
391is equivalent to @code{@w{#define FOO 1020}}.  All these tricks are
392extremely confusing and should not be used in code intended to be
393readable.
394
395There is no way to prevent a backslash at the end of a line from being
396interpreted as a backslash-newline.
397
398@example
399"foo\\
400bar"
401@end example
402
403@noindent
404is equivalent to @code{"foo\bar"}, not to @code{"foo\\bar"}.  To avoid
405having to worry about this, do not use the deprecated GNU extension
406which permits multi-line strings.  Instead, use string literal
407concatenation:
408
409@example
410   "foo\\"
411   "bar"
412@end example
413
414@noindent
415Your program will be more portable this way, too.
416
417@node Tokenization
418@section Tokenization
419
420@cindex tokens
421@cindex preprocessing tokens
422After the textual transformations are finished, the input file is
423converted into a sequence of @dfn{preprocessing tokens}.  These mostly
424correspond to the syntactic tokens used by the C compiler, but there are
425a few differences.  White space separates tokens; it is not itself a
426token of any kind.  Tokens do not have to be separated by white space,
427but it is often necessary to avoid ambiguities.
428
429When faced with a sequence of characters that has more than one possible
430tokenization, the preprocessor is greedy.  It always makes each token,
431starting from the left, as big as possible before moving on to the next
432token.  For instance, @code{a+++++b} is interpreted as
433@code{@w{a ++ ++ + b}}, not as @code{@w{a ++ + ++ b}}, even though the
434latter tokenization could be part of a valid C program and the former
435could not.
436
437Once the input file is broken into tokens, the token boundaries never
438change, except when the @samp{##} preprocessing operator is used to paste
439tokens together.  @xref{Concatenation}.  For example,
440
441@example
442@group
443#define foo() bar
444foo()baz
445     @expansion{} bar baz
446@emph{not}
447     @expansion{} barbaz
448@end group
449@end example
450
451The compiler does not re-tokenize the preprocessor's output.  Each
452preprocessing token becomes one compiler token.
453
454@cindex identifiers
455Preprocessing tokens fall into five broad classes: identifiers,
456preprocessing numbers, string literals, punctuators, and other.  An
457@dfn{identifier} is the same as an identifier in C: any sequence of
458letters, digits, or underscores, which begins with a letter or
459underscore.  Keywords of C have no significance to the preprocessor;
460they are ordinary identifiers.  You can define a macro whose name is a
461keyword, for instance.  The only identifier which can be considered a
462preprocessing keyword is @code{defined}.  @xref{Defined}.
463
464This is mostly true of other languages which use the C preprocessor.
465However, a few of the keywords of C++ are significant even in the
466preprocessor.  @xref{C++ Named Operators}.
467
468In the 1999 C standard, identifiers may contain letters which are not
469part of the ``basic source character set,'' at the implementation's
470discretion (such as accented Latin letters, Greek letters, or Chinese
471ideograms).  This may be done with an extended character set, or the
472@samp{\u} and @samp{\U} escape sequences.  GCC does not presently
473implement either feature in the preprocessor or the compiler.
474
475As an extension, GCC treats @samp{$} as a letter.  This is for
476compatibility with some systems, such as VMS, where @samp{$} is commonly
477used in system-defined function and object names.  @samp{$} is not a
478letter in strictly conforming mode, or if you specify the @option{-$}
479option.  @xref{Invocation}.
480
481@cindex numbers
482@cindex preprocessing numbers
483A @dfn{preprocessing number} has a rather bizarre definition.  The
484category includes all the normal integer and floating point constants
485one expects of C, but also a number of other things one might not
486initially recognize as a number.  Formally, preprocessing numbers begin
487with an optional period, a required decimal digit, and then continue
488with any sequence of letters, digits, underscores, periods, and
489exponents.  Exponents are the two-character sequences @samp{e+},
490@samp{e-}, @samp{E+}, @samp{E-}, @samp{p+}, @samp{p-}, @samp{P+}, and
491@samp{P-}.  (The exponents that begin with @samp{p} or @samp{P} are new
492to C99.  They are used for hexadecimal floating-point constants.)
493
494The purpose of this unusual definition is to isolate the preprocessor
495from the full complexity of numeric constants.  It does not have to
496distinguish between lexically valid and invalid floating-point numbers,
497which is complicated.  The definition also permits you to split an
498identifier at any position and get exactly two tokens, which can then be
499pasted back together with the @samp{##} operator.
500
501It's possible for preprocessing numbers to cause programs to be
502misinterpreted.  For example, @code{0xE+12} is a preprocessing number
503which does not translate to any valid numeric constant, therefore a
504syntax error.  It does not mean @code{@w{0xE + 12}}, which is what you
505might have intended.
506
507@cindex string literals
508@cindex string constants
509@cindex character constants
510@cindex header file names
511@c the @: prevents makeinfo from turning '' into ".
512@dfn{String literals} are string constants, character constants, and
513header file names (the argument of @samp{#include}).@footnote{The C
514standard uses the term @dfn{string literal} to refer only to what we are
515calling @dfn{string constants}.}  String constants and character
516constants are straightforward: @t{"@dots{}"} or @t{'@dots{}'}.  In
517either case embedded quotes should be escaped with a backslash:
518@t{'\'@:'} is the character constant for @samp{'}.  There is no limit on
519the length of a character constant, but the value of a character
520constant that contains more than one character is
521implementation-defined.  @xref{Implementation Details}.
522
523Header file names either look like string constants, @t{"@dots{}"}, or are
524written with angle brackets instead, @t{<@dots{}>}.  In either case,
525backslash is an ordinary character.  There is no way to escape the
526closing quote or angle bracket.  The preprocessor looks for the header
527file in different places depending on which form you use.  @xref{Include
528Operation}.
529
530In standard C, no string literal may extend past the end of a line.  GNU
531CPP accepts multi-line string constants, but not multi-line character
532constants or header file names.  This extension is deprecated and will
533be removed in GCC 3.1.  You may use continued lines instead, or string
534constant concatenation.  @xref{Differences from previous versions}.
535
536@cindex punctuators
537@cindex digraphs
538@cindex alternative tokens
539@dfn{Punctuators} are all the usual bits of punctuation which are
540meaningful to C and C++.  All but three of the punctuation characters in
541ASCII are C punctuators.  The exceptions are @samp{@@}, @samp{$}, and
542@samp{`}.  In addition, all the two- and three-character operators are
543punctuators.  There are also six @dfn{digraphs}, which the C++ standard
544calls @dfn{alternative tokens}, which are merely alternate ways to spell
545other punctuators.  This is a second attempt to work around missing
546punctuation in obsolete systems.  It has no negative side effects,
547unlike trigraphs, but does not cover as much ground.  The digraphs and
548their corresponding normal punctuators are:
549
550@example
551Digraph:        <%  %>  <:  :>  %:  %:%:
552Punctuator:      @{   @}   [   ]   #    ##
553@end example
554
555@cindex other tokens
556Any other single character is considered ``other.'' It is passed on to
557the preprocessor's output unmolested.  The C compiler will almost
558certainly reject source code containing ``other'' tokens.  In ASCII, the
559only other characters are @samp{@@}, @samp{$}, @samp{`}, and control
560characters other than NUL (all bits zero).  (Note that @samp{$} is
561normally considered a letter.)  All characters with the high bit set
562(numeric range 0x7F--0xFF) are also ``other'' in the present
563implementation.  This will change when proper support for international
564character sets is added to GCC@.
565
566NUL is a special case because of the high probability that its
567appearance is accidental, and because it may be invisible to the user
568(many terminals do not display NUL at all).  Within comments, NULs are
569silently ignored, just as any other character would be.  In running
570text, NUL is considered white space.  For example, these two directives
571have the same meaning.
572
573@example
574#define X^@@1
575#define X 1
576@end example
577
578@noindent
579(where @samp{^@@} is ASCII NUL)@.  Within string or character constants,
580NULs are preserved.  In the latter two cases the preprocessor emits a
581warning message.
582
583@node The preprocessing language
584@section The preprocessing language
585@cindex directives
586@cindex preprocessing directives
587@cindex directive line
588@cindex directive name
589
590After tokenization, the stream of tokens may simply be passed straight
591to the compiler's parser.  However, if it contains any operations in the
592@dfn{preprocessing language}, it will be transformed first.  This stage
593corresponds roughly to the standard's ``translation phase 4'' and is
594what most people think of as the preprocessor's job.
595
596The preprocessing language consists of @dfn{directives} to be executed
597and @dfn{macros} to be expanded.  Its primary capabilities are:
598
599@itemize @bullet
600@item
601Inclusion of header files.  These are files of declarations that can be
602substituted into your program.
603
604@item
605Macro expansion.  You can define @dfn{macros}, which are abbreviations
606for arbitrary fragments of C code.  The preprocessor will replace the
607macros with their definitions throughout the program.  Some macros are
608automatically defined for you.
609
610@item
611Conditional compilation.  You can include or exclude parts of the
612program according to various conditions.
613
614@item
615Line control.  If you use a program to combine or rearrange source files
616into an intermediate file which is then compiled, you can use line
617control to inform the compiler where each source line originally came
618from.
619
620@item
621Diagnostics.  You can detect problems at compile time and issue errors
622or warnings.
623@end itemize
624
625There are a few more, less useful, features.
626
627Except for expansion of predefined macros, all these operations are
628triggered with @dfn{preprocessing directives}.  Preprocessing directives
629are lines in your program that start with @samp{#}.  Whitespace is
630allowed before and after the @samp{#}.  The @samp{#} is followed by an
631identifier, the @dfn{directive name}.  It specifies the operation to
632perform.  Directives are commonly referred to as @samp{#@var{name}}
633where @var{name} is the directive name.  For example, @samp{#define} is
634the directive that defines a macro.
635
636The @samp{#} which begins a directive cannot come from a macro
637expansion.  Also, the directive name is not macro expanded.  Thus, if
638@code{foo} is defined as a macro expanding to @code{define}, that does
639not make @samp{#foo} a valid preprocessing directive.
640
641The set of valid directive names is fixed.  Programs cannot define new
642preprocessing directives.
643
644Some directives require arguments; these make up the rest of the
645directive line and must be separated from the directive name by
646whitespace.  For example, @samp{#define} must be followed by a macro
647name and the intended expansion of the macro.
648
649A preprocessing directive cannot cover more than one line.  The line
650may, however, be continued with backslash-newline, or by a block comment
651which extends past the end of the line.  In either case, when the
652directive is processed, the continuations have already been merged with
653the first line to make one long line.
654
655@node Header Files
656@chapter Header Files
657
658@cindex header file
659A header file is a file containing C declarations and macro definitions
660(@pxref{Macros}) to be shared between several source files.  You request
661the use of a header file in your program by @dfn{including} it, with the
662C preprocessing directive @samp{#include}.
663
664Header files serve two purposes.
665
666@itemize @bullet
667@item
668@cindex system header files
669System header files declare the interfaces to parts of the operating
670system.  You include them in your program to supply the definitions and
671declarations you need to invoke system calls and libraries.
672
673@item
674Your own header files contain declarations for interfaces between the
675source files of your program.  Each time you have a group of related
676declarations and macro definitions all or most of which are needed in
677several different source files, it is a good idea to create a header
678file for them.
679@end itemize
680
681Including a header file produces the same results as copying the header
682file into each source file that needs it.  Such copying would be
683time-consuming and error-prone.  With a header file, the related
684declarations appear in only one place.  If they need to be changed, they
685can be changed in one place, and programs that include the header file
686will automatically use the new version when next recompiled.  The header
687file eliminates the labor of finding and changing all the copies as well
688as the risk that a failure to find one copy will result in
689inconsistencies within a program.
690
691In C, the usual convention is to give header files names that end with
692@file{.h}.  It is most portable to use only letters, digits, dashes, and
693underscores in header file names, and at most one dot.
694
695@menu
696* Include Syntax::
697* Include Operation::
698* Search Path::
699* Once-Only Headers::
700* Computed Includes::
701* Wrapper Headers::
702* System Headers::
703@end menu
704
705@node Include Syntax
706@section Include Syntax
707
708@findex #include
709Both user and system header files are included using the preprocessing
710directive @samp{#include}.  It has two variants:
711
712@table @code
713@item #include <@var{file}>
714This variant is used for system header files.  It searches for a file
715named @var{file} in a standard list of system directories.  You can prepend
716directories to this list with the @option{-I} option (@pxref{Invocation}).
717
718@item #include "@var{file}"
719This variant is used for header files of your own program.  It searches
720for a file named @var{file} first in the directory containing the
721current file, then in the same directories used for @code{<@var{file}>}.
722@end table
723
724The argument of @samp{#include}, whether delimited with quote marks or
725angle brackets, behaves like a string constant in that comments are not
726recognized, and macro names are not expanded.  Thus, @code{@w{#include
727<x/*y>}} specifies inclusion of a system header file named @file{x/*y}.
728
729However, if backslashes occur within @var{file}, they are considered
730ordinary text characters, not escape characters.  None of the character
731escape sequences appropriate to string constants in C are processed.
732Thus, @code{@w{#include "x\n\\y"}} specifies a filename containing three
733backslashes.  (Some systems interpret @samp{\} as a pathname separator.
734All of these also interpret @samp{/} the same way.  It is most portable
735to use only @samp{/}.)
736
737It is an error if there is anything (other than comments) on the line
738after the file name.
739
740@node Include Operation
741@section Include Operation
742
743The @samp{#include} directive works by directing the C preprocessor to
744scan the specified file as input before continuing with the rest of the
745current file.  The output from the preprocessor contains the output
746already generated, followed by the output resulting from the included
747file, followed by the output that comes from the text after the
748@samp{#include} directive.  For example, if you have a header file
749@file{header.h} as follows,
750
751@example
752char *test (void);
753@end example
754
755@noindent
756and a main program called @file{program.c} that uses the header file,
757like this,
758
759@example
760int x;
761#include "header.h"
762
763int
764main (void)
765@{
766  puts (test ());
767@}
768@end example
769
770@noindent
771the compiler will see the same token stream as it would if
772@file{program.c} read
773
774@example
775int x;
776char *test (void);
777
778int
779main (void)
780@{
781  puts (test ());
782@}
783@end example
784
785Included files are not limited to declarations and macro definitions;
786those are merely the typical uses.  Any fragment of a C program can be
787included from another file.  The include file could even contain the
788beginning of a statement that is concluded in the containing file, or
789the end of a statement that was started in the including file.  However,
790a comment or a string or character constant may not start in the
791included file and finish in the including file.  An unterminated
792comment, string constant or character constant in an included file is
793considered to end (with an error message) at the end of the file.
794
795To avoid confusion, it is best if header files contain only complete
796syntactic units---function declarations or definitions, type
797declarations, etc.
798
799The line following the @samp{#include} directive is always treated as a
800separate line by the C preprocessor, even if the included file lacks a
801final newline.
802
803@node Search Path
804@section Search Path
805
806GCC looks in several different places for headers.  On a normal Unix
807system, if you do not instruct it otherwise, it will look for headers
808requested with @code{@w{#include <@var{file}>}} in:
809
810@example
811/usr/local/include
812/usr/lib/gcc-lib/@var{target}/@var{version}/include
813/usr/@var{target}/include
814/usr/include
815@end example
816
817For C++ programs, it will also look in @file{/usr/include/g++-v3},
818first.  In the above, @var{target} is the canonical name of the system
819GCC was configured to compile code for; often but not always the same as
820the canonical name of the system it runs on.  @var{version} is the
821version of GCC in use.
822
823You can add to this list with the @option{-I@var{dir}} command line
824option.  All the directories named by @option{-I} are searched, in
825left-to-right order, @emph{before} the default directories.  You can
826also prevent GCC from searching any of the default directories with the
827@option{-nostdinc} option.  This is useful when you are compiling an
828operating system kernel or some other program that does not use the
829standard C library facilities, or the standard C library itself.
830
831GCC looks for headers requested with @code{@w{#include "@var{file}"}}
832first in the directory containing the current file, then in the same
833places it would have looked for a header requested with angle brackets.
834For example, if @file{/usr/include/sys/stat.h} contains
835@code{@w{#include "types.h"}}, GCC looks for @file{types.h} first in
836@file{/usr/include/sys}, then in its usual search path.
837
838If you name a search directory with @option{-I@var{dir}} that is also a
839system include directory, the @option{-I} wins; the directory will be
840searched according to the @option{-I} ordering, and it will not be
841treated as a system include directory. GCC will warn you when a system
842include directory is hidden in this way.
843
844@samp{#line} (@pxref{Line Control}) does not change GCC's idea of the
845directory containing the current file.
846
847You may put @option{-I-} at any point in your list of @option{-I} options.
848This has two effects.  First, directories appearing before the
849@option{-I-} in the list are searched only for headers requested with
850quote marks.  Directories after @option{-I-} are searched for all
851headers.  Second, the directory containing the current file is not
852searched for anything, unless it happens to be one of the directories
853named by an @option{-I} switch.
854
855@option{-I. -I-} is not the same as no @option{-I} options at all, and does
856not cause the same behavior for @samp{<>} includes that @samp{""}
857includes get with no special options.  @option{-I.} searches the
858compiler's current working directory for header files.  That may or may
859not be the same as the directory containing the current file.
860
861If you need to look for headers in a directory named @file{-}, write
862@option{-I./-}.
863
864There are several more ways to adjust the header search path.  They are
865generally less useful.  @xref{Invocation}.
866
867@node Once-Only Headers
868@section Once-Only Headers
869@cindex repeated inclusion
870@cindex including just once
871@cindex wrapper @code{#ifndef}
872
873If a header file happens to be included twice, the compiler will process
874its contents twice.  This is very likely to cause an error, e.g.@: when the
875compiler sees the same structure definition twice.  Even if it does not,
876it will certainly waste time.
877
878The standard way to prevent this is to enclose the entire real contents
879of the file in a conditional, like this:
880
881@example
882@group
883/* File foo.  */
884#ifndef FILE_FOO_SEEN
885#define FILE_FOO_SEEN
886
887@var{the entire file}
888
889#endif /* !FILE_FOO_SEEN */
890@end group
891@end example
892
893This construct is commonly known as a @dfn{wrapper #ifndef}.
894When the header is included again, the conditional will be false,
895because @code{FILE_FOO_SEEN} is defined.  The preprocessor will skip
896over the entire contents of the file, and the compiler will not see it
897twice.
898
899GNU CPP optimizes even further.  It remembers when a header file has a
900wrapper @samp{#ifndef}.  If a subsequent @samp{#include} specifies that
901header, and the macro in the @samp{#ifndef} is still defined, it does
902not bother to rescan the file at all.
903
904You can put comments outside the wrapper.  They will not interfere with
905this optimization.
906
907@cindex controlling macro
908@cindex guard macro
909The macro @code{FILE_FOO_SEEN} is called the @dfn{controlling macro} or
910@dfn{guard macro}.  In a user header file, the macro name should not
911begin with @samp{_}.  In a system header file, it should begin with
912@samp{__} to avoid conflicts with user programs.  In any kind of header
913file, the macro name should contain the name of the file and some
914additional text, to avoid conflicts with other header files.
915
916@node Computed Includes
917@section Computed Includes
918@cindex computed includes
919@cindex macros in include
920
921Sometimes it is necessary to select one of several different header
922files to be included into your program.  They might specify
923configuration parameters to be used on different sorts of operating
924systems, for instance.  You could do this with a series of conditionals,
925
926@example
927#if SYSTEM_1
928# include "system_1.h"
929#elif SYSTEM_2
930# include "system_2.h"
931#elif SYSTEM_3
932@dots{}
933#endif
934@end example
935
936That rapidly becomes tedious.  Instead, the preprocessor offers the
937ability to use a macro for the header name.  This is called a
938@dfn{computed include}.  Instead of writing a header name as the direct
939argument of @samp{#include}, you simply put a macro name there instead:
940
941@example
942#define SYSTEM_H "system_1.h"
943@dots{}
944#include SYSTEM_H
945@end example
946
947@noindent
948@code{SYSTEM_H} will be expanded, and the preprocessor will look for
949@file{system_1.h} as if the @samp{#include} had been written that way
950originally.  @code{SYSTEM_H} could be defined by your Makefile with a
951@option{-D} option.
952
953You must be careful when you define the macro.  @samp{#define} saves
954tokens, not text.  The preprocessor has no way of knowing that the macro
955will be used as the argument of @samp{#include}, so it generates
956ordinary tokens, not a header name.  This is unlikely to cause problems
957if you use double-quote includes, which are close enough to string
958constants.  If you use angle brackets, however, you may have trouble.
959
960The syntax of a computed include is actually a bit more general than the
961above.  If the first non-whitespace character after @samp{#include} is
962not @samp{"} or @samp{<}, then the entire line is macro-expanded
963like running text would be.
964
965If the line expands to a single string constant, the contents of that
966string constant are the file to be included.  CPP does not re-examine the
967string for embedded quotes, but neither does it process backslash
968escapes in the string.  Therefore
969
970@example
971#define HEADER "a\"b"
972#include HEADER
973@end example
974
975@noindent
976looks for a file named @file{a\"b}.  CPP searches for the file according
977to the rules for double-quoted includes.
978
979If the line expands to a token stream beginning with a @samp{<} token
980and including a @samp{>} token, then the tokens between the @samp{<} and
981the first @samp{>} are combined to form the filename to be included.
982Any whitespace between tokens is reduced to a single space; then any
983space after the initial @samp{<} is retained, but a trailing space
984before the closing @samp{>} is ignored.  CPP searches for the file
985according to the rules for angle-bracket includes.
986
987In either case, if there are any tokens on the line after the file name,
988an error occurs and the directive is not processed.  It is also an error
989if the result of expansion does not match either of the two expected
990forms.
991
992These rules are implementation-defined behavior according to the C
993standard.  To minimize the risk of different compilers interpreting your
994computed includes differently, we recommend you use only a single
995object-like macro which expands to a string constant.  This will also
996minimize confusion for people reading your program.
997
998@node Wrapper Headers
999@section Wrapper Headers
1000@cindex wrapper headers
1001@cindex overriding a header file
1002@findex #include_next
1003
1004Sometimes it is necessary to adjust the contents of a system-provided
1005header file without editing it directly.  GCC's @command{fixincludes}
1006operation does this, for example.  One way to do that would be to create
1007a new header file with the same name and insert it in the search path
1008before the original header.  That works fine as long as you're willing
1009to replace the old header entirely.  But what if you want to refer to
1010the old header from the new one?
1011
1012You cannot simply include the old header with @samp{#include}.  That
1013will start from the beginning, and find your new header again.  If your
1014header is not protected from multiple inclusion (@pxref{Once-Only
1015Headers}), it will recurse infinitely and cause a fatal error.
1016
1017You could include the old header with an absolute pathname:
1018@example
1019#include "/usr/include/old-header.h"
1020@end example
1021@noindent
1022This works, but is not clean; should the system headers ever move, you
1023would have to edit the new headers to match.
1024
1025There is no way to solve this problem within the C standard, but you can
1026use the GNU extension @samp{#include_next}.  It means, ``Include the
1027@emph{next} file with this name.''  This directive works like
1028@samp{#include} except in searching for the specified file: it starts
1029searching the list of header file directories @emph{after} the directory
1030in which the current file was found.
1031
1032Suppose you specify @option{-I /usr/local/include}, and the list of
1033directories to search also includes @file{/usr/include}; and suppose
1034both directories contain @file{signal.h}.  Ordinary @code{@w{#include
1035<signal.h>}} finds the file under @file{/usr/local/include}.  If that
1036file contains @code{@w{#include_next <signal.h>}}, it starts searching
1037after that directory, and finds the file in @file{/usr/include}.
1038
1039@samp{#include_next} does not distinguish between @code{<@var{file}>}
1040and @code{"@var{file}"} inclusion, nor does it check that the file you
1041specify has the same name as the current file.  It simply looks for the
1042file named, starting with the directory in the search path after the one
1043where the current file was found.
1044
1045The use of @samp{#include_next} can lead to great confusion.  We
1046recommend it be used only when there is no other alternative.  In
1047particular, it should not be used in the headers belonging to a specific
1048program; it should be used only to make global corrections along the
1049lines of @command{fixincludes}.
1050
1051@node System Headers
1052@section System Headers
1053@cindex system header files
1054
1055The header files declaring interfaces to the operating system and
1056runtime libraries often cannot be written in strictly conforming C@.
1057Therefore, GCC gives code found in @dfn{system headers} special
1058treatment.  All warnings, other than those generated by @samp{#warning}
1059(@pxref{Diagnostics}), are suppressed while GCC is processing a system
1060header.  Macros defined in a system header are immune to a few warnings
1061wherever they are expanded.  This immunity is granted on an ad-hoc
1062basis, when we find that a warning generates lots of false positives
1063because of code in macros defined in system headers.
1064
1065Normally, only the headers found in specific directories are considered
1066system headers.  These directories are determined when GCC is compiled.
1067There are, however, two ways to make normal headers into system headers.
1068
1069The @option{-isystem} command line option adds its argument to the list of
1070directories to search for headers, just like @option{-I}.  Any headers
1071found in that directory will be considered system headers.
1072
1073All directories named by @option{-isystem} are searched @emph{after} all
1074directories named by @option{-I}, no matter what their order was on the
1075command line.  If the same directory is named by both @option{-I} and
1076@option{-isystem}, @option{-I} wins; it is as if the @option{-isystem} option
1077had never been specified at all. GCC warns you when this happens.
1078
1079@findex #pragma GCC system_header
1080There is also a directive, @code{@w{#pragma GCC system_header}}, which
1081tells GCC to consider the rest of the current include file a system
1082header, no matter where it was found.  Code that comes before the
1083@samp{#pragma} in the file will not be affected.  @code{@w{#pragma GCC
1084system_header}} has no effect in the primary source file.
1085
1086On very old systems, some of the pre-defined system header directories
1087get even more special treatment.  GNU C++ considers code in headers
1088found in those directories to be surrounded by an @code{@w{extern "C"}}
1089block.  There is no way to request this behavior with a @samp{#pragma},
1090or from the command line.
1091
1092@node Macros
1093@chapter Macros
1094
1095A @dfn{macro} is a fragment of code which has been given a name.
1096Whenever the name is used, it is replaced by the contents of the macro.
1097There are two kinds of macros.  They differ mostly in what they look
1098like when they are used.  @dfn{Object-like} macros resemble data objects
1099when used, @dfn{function-like} macros resemble function calls.
1100
1101You may define any valid identifier as a macro, even if it is a C
1102keyword.  The preprocessor does not know anything about keywords.  This
1103can be useful if you wish to hide a keyword such as @code{const} from an
1104older compiler that does not understand it.  However, the preprocessor
1105operator @code{defined} (@pxref{Defined}) can never be defined as a
1106macro, and C++'s named operators (@pxref{C++ Named Operators}) cannot be
1107macros when you are compiling C++.
1108
1109@menu
1110* Object-like Macros::
1111* Function-like Macros::
1112* Macro Arguments::
1113* Stringification::
1114* Concatenation::
1115* Variadic Macros::
1116* Predefined Macros::
1117* Undefining and Redefining Macros::
1118* Macro Pitfalls::
1119@end menu
1120
1121@node Object-like Macros
1122@section Object-like Macros
1123@cindex object-like macro
1124@cindex symbolic constants
1125@cindex manifest constants
1126
1127An @dfn{object-like macro} is a simple identifier which will be replaced
1128by a code fragment.  It is called object-like because it looks like a
1129data object in code that uses it.  They are most commonly used to give
1130symbolic names to numeric constants.
1131
1132@findex #define
1133You create macros with the @samp{#define} directive.  @samp{#define} is
1134followed by the name of the macro and then the token sequence it should
1135be an abbreviation for, which is variously referred to as the macro's
1136@dfn{body}, @dfn{expansion} or @dfn{replacement list}.  For example,
1137
1138@example
1139#define BUFFER_SIZE 1024
1140@end example
1141
1142@noindent
1143defines a macro named @code{BUFFER_SIZE} as an abbreviation for the
1144token @code{1024}.  If somewhere after this @samp{#define} directive
1145there comes a C statement of the form
1146
1147@example
1148foo = (char *) malloc (BUFFER_SIZE);
1149@end example
1150
1151@noindent
1152then the C preprocessor will recognize and @dfn{expand} the macro
1153@code{BUFFER_SIZE}.  The C compiler will see the same tokens as it would
1154if you had written
1155
1156@example
1157foo = (char *) malloc (1024);
1158@end example
1159
1160By convention, macro names are written in upper case.  Programs are
1161easier to read when it is possible to tell at a glance which names are
1162macros.
1163
1164The macro's body ends at the end of the @samp{#define} line.  You may
1165continue the definition onto multiple lines, if necessary, using
1166backslash-newline.  When the macro is expanded, however, it will all
1167come out on one line.  For example,
1168
1169@example
1170#define NUMBERS 1, \
1171                2, \
1172                3
1173int x[] = @{ NUMBERS @};
1174     @expansion{} int x[] = @{ 1, 2, 3 @};
1175@end example
1176
1177@noindent
1178The most common visible consequence of this is surprising line numbers
1179in error messages.
1180
1181There is no restriction on what can go in a macro body provided it
1182decomposes into valid preprocessing tokens.  Parentheses need not
1183balance, and the body need not resemble valid C code.  (If it does not,
1184you may get error messages from the C compiler when you use the macro.)
1185
1186The C preprocessor scans your program sequentially.  Macro definitions
1187take effect at the place you write them.  Therefore, the following input
1188to the C preprocessor
1189
1190@example
1191foo = X;
1192#define X 4
1193bar = X;
1194@end example
1195
1196@noindent
1197produces
1198
1199@example
1200foo = X;
1201bar = 4;
1202@end example
1203
1204When the preprocessor expands a macro name, the macro's expansion
1205replaces the macro invocation, then the expansion is examined for more
1206macros to expand.  For example,
1207
1208@example
1209@group
1210#define TABLESIZE BUFSIZE
1211#define BUFSIZE 1024
1212TABLESIZE
1213     @expansion{} BUFSIZE
1214     @expansion{} 1024
1215@end group
1216@end example
1217
1218@noindent
1219@code{TABLESIZE} is expanded first to produce @code{BUFSIZE}, then that
1220macro is expanded to produce the final result, @code{1024}.
1221
1222Notice that @code{BUFSIZE} was not defined when @code{TABLESIZE} was
1223defined.  The @samp{#define} for @code{TABLESIZE} uses exactly the
1224expansion you specify---in this case, @code{BUFSIZE}---and does not
1225check to see whether it too contains macro names.  Only when you
1226@emph{use} @code{TABLESIZE} is the result of its expansion scanned for
1227more macro names.
1228
1229This makes a difference if you change the definition of @code{BUFSIZE}
1230at some point in the source file.  @code{TABLESIZE}, defined as shown,
1231will always expand using the definition of @code{BUFSIZE} that is
1232currently in effect:
1233
1234@example
1235#define BUFSIZE 1020
1236#define TABLESIZE BUFSIZE
1237#undef BUFSIZE
1238#define BUFSIZE 37
1239@end example
1240
1241@noindent
1242Now @code{TABLESIZE} expands (in two stages) to @code{37}.
1243
1244If the expansion of a macro contains its own name, either directly or
1245via intermediate macros, it is not expanded again when the expansion is
1246examined for more macros.  This prevents infinite recursion.
1247@xref{Self-Referential Macros}, for the precise details.
1248
1249@node Function-like Macros
1250@section Function-like Macros
1251@cindex function-like macros
1252
1253You can also define macros whose use looks like a function call.  These
1254are called @dfn{function-like macros}.  To define a function-like macro,
1255you use the same @samp{#define} directive, but you put a pair of
1256parentheses immediately after the macro name.  For example,
1257
1258@example
1259#define lang_init()  c_init()
1260lang_init()
1261     @expansion{} c_init()
1262@end example
1263
1264A function-like macro is only expanded if its name appears with a pair
1265of parentheses after it.  If you write just the name, it is left alone.
1266This can be useful when you have a function and a macro of the same
1267name, and you wish to use the function sometimes.
1268
1269@example
1270extern void foo(void);
1271#define foo() /* optimized inline version */
1272@dots{}
1273  foo();
1274  funcptr = foo;
1275@end example
1276
1277Here the call to @code{foo()} will use the macro, but the function
1278pointer will get the address of the real function.  If the macro were to
1279be expanded, it would cause a syntax error.
1280
1281If you put spaces between the macro name and the parentheses in the
1282macro definition, that does not define a function-like macro, it defines
1283an object-like macro whose expansion happens to begin with a pair of
1284parentheses.
1285
1286@example
1287#define lang_init ()    c_init()
1288lang_init()
1289     @expansion{} () c_init()()
1290@end example
1291
1292The first two pairs of parentheses in this expansion come from the
1293macro.  The third is the pair that was originally after the macro
1294invocation.  Since @code{lang_init} is an object-like macro, it does not
1295consume those parentheses.
1296
1297@node Macro Arguments
1298@section Macro Arguments
1299@cindex arguments
1300@cindex macros with arguments
1301@cindex arguments in macro definitions
1302
1303Function-like macros can take @dfn{arguments}, just like true functions.
1304To define a macro that uses arguments, you insert @dfn{parameters}
1305between the pair of parentheses in the macro definition that make the
1306macro function-like.  The parameters must be valid C identifiers,
1307separated by commas and optionally whitespace.
1308
1309To invoke a macro that takes arguments, you write the name of the macro
1310followed by a list of @dfn{actual arguments} in parentheses, separated
1311by commas.  The invocation of the macro need not be restricted to a
1312single logical line---it can cross as many lines in the source file as
1313you wish.  The number of arguments you give must match the number of
1314parameters in the macro definition.  When the macro is expanded, each
1315use of a parameter in its body is replaced by the tokens of the
1316corresponding argument.  (You need not use all of the parameters in the
1317macro body.)
1318
1319As an example, here is a macro that computes the minimum of two numeric
1320values, as it is defined in many C programs, and some uses.
1321
1322@example
1323#define min(X, Y)  ((X) < (Y) ? (X) : (Y))
1324  x = min(a, b);          @expansion{}  x = ((a) < (b) ? (a) : (b));
1325  y = min(1, 2);          @expansion{}  y = ((1) < (2) ? (1) : (2));
1326  z = min(a + 28, *p);    @expansion{}  z = ((a + 28) < (*p) ? (a + 28) : (*p));
1327@end example
1328
1329@noindent
1330(In this small example you can already see several of the dangers of
1331macro arguments.  @xref{Macro Pitfalls}, for detailed explanations.)
1332
1333Leading and trailing whitespace in each argument is dropped, and all
1334whitespace between the tokens of an argument is reduced to a single
1335space.  Parentheses within each argument must balance; a comma within
1336such parentheses does not end the argument.  However, there is no
1337requirement for square brackets or braces to balance, and they do not
1338prevent a comma from separating arguments.  Thus,
1339
1340@example
1341macro (array[x = y, x + 1])
1342@end example
1343
1344@noindent
1345passes two arguments to @code{macro}: @code{array[x = y} and @code{x +
13461]}.  If you want to supply @code{array[x = y, x + 1]} as an argument,
1347you can write it as @code{array[(x = y, x + 1)]}, which is equivalent C
1348code.
1349
1350All arguments to a macro are completely macro-expanded before they are
1351substituted into the macro body.  After substitution, the complete text
1352is scanned again for macros to expand, including the arguments.  This rule
1353may seem strange, but it is carefully designed so you need not worry
1354about whether any function call is actually a macro invocation.  You can
1355run into trouble if you try to be too clever, though.  @xref{Argument
1356Prescan}, for detailed discussion.
1357
1358For example, @code{min (min (a, b), c)} is first expanded to
1359
1360@example
1361  min (((a) < (b) ? (a) : (b)), (c))
1362@end example
1363
1364@noindent
1365and then to
1366
1367@example
1368@group
1369((((a) < (b) ? (a) : (b))) < (c)
1370 ? (((a) < (b) ? (a) : (b)))
1371 : (c))
1372@end group
1373@end example
1374
1375@noindent
1376(Line breaks shown here for clarity would not actually be generated.)
1377
1378@cindex empty macro arguments
1379You can leave macro arguments empty; this is not an error to the
1380preprocessor (but many macros will then expand to invalid code).
1381You cannot leave out arguments entirely; if a macro takes two arguments,
1382there must be exactly one comma at the top level of its argument list.
1383Here are some silly examples using @code{min}:
1384
1385@example
1386min(, b)        @expansion{} ((   ) < (b) ? (   ) : (b))
1387min(a, )        @expansion{} ((a  ) < ( ) ? (a  ) : ( ))
1388min(,)          @expansion{} ((   ) < ( ) ? (   ) : ( ))
1389min((,),)       @expansion{} (((,)) < ( ) ? ((,)) : ( ))
1390
1391min()      @error{} macro "min" requires 2 arguments, but only 1 given
1392min(,,)    @error{} macro "min" passed 3 arguments, but takes just 2
1393@end example
1394
1395Whitespace is not a preprocessing token, so if a macro @code{foo} takes
1396one argument, @code{@w{foo ()}} and @code{@w{foo ( )}} both supply it an
1397empty argument.  Previous GNU preprocessor implementations and
1398documentation were incorrect on this point, insisting that a
1399function-like macro that takes a single argument be passed a space if an
1400empty argument was required.
1401
1402Macro parameters appearing inside string literals are not replaced by
1403their corresponding actual arguments.
1404
1405@example
1406#define foo(x) x, "x"
1407foo(bar)        @expansion{} bar, "x"
1408@end example
1409
1410@node Stringification
1411@section Stringification
1412@cindex stringification
1413@cindex @samp{#} operator
1414
1415Sometimes you may want to convert a macro argument into a string
1416constant.  Parameters are not replaced inside string constants, but you
1417can use the @samp{#} preprocessing operator instead.  When a macro
1418parameter is used with a leading @samp{#}, the preprocessor replaces it
1419with the literal text of the actual argument, converted to a string
1420constant.  Unlike normal parameter replacement, the argument is not
1421macro-expanded first.  This is called @dfn{stringification}.
1422
1423There is no way to combine an argument with surrounding text and
1424stringify it all together.  Instead, you can write a series of adjacent
1425string constants and stringified arguments.  The preprocessor will
1426replace the stringified arguments with string constants.  The C
1427compiler will then combine all the adjacent string constants into one
1428long string.
1429
1430Here is an example of a macro definition that uses stringification:
1431
1432@example
1433@group
1434#define WARN_IF(EXP) \
1435do @{ if (EXP) \
1436        fprintf (stderr, "Warning: " #EXP "\n"); @} \
1437while (0)
1438WARN_IF (x == 0);
1439     @expansion{} do @{ if (x == 0)
1440           fprintf (stderr, "Warning: " "x == 0" "\n"); @} while (0);
1441@end group
1442@end example
1443
1444@noindent
1445The argument for @code{EXP} is substituted once, as-is, into the
1446@code{if} statement, and once, stringified, into the argument to
1447@code{fprintf}.  If @code{x} were a macro, it would be expanded in the
1448@code{if} statement, but not in the string.
1449
1450The @code{do} and @code{while (0)} are a kludge to make it possible to
1451write @code{WARN_IF (@var{arg});}, which the resemblance of
1452@code{WARN_IF} to a function would make C programmers want to do; see
1453@ref{Swallowing the Semicolon}.
1454
1455Stringification in C involves more than putting double-quote characters
1456around the fragment.  The preprocessor backslash-escapes the quotes
1457surrounding embedded string constants, and all backslashes within string and
1458character constants, in order to get a valid C string constant with the
1459proper contents.  Thus, stringifying @code{@w{p = "foo\n";}} results in
1460@t{@w{"p = \"foo\\n\";"}}.  However, backslashes that are not inside string
1461or character constants are not duplicated: @samp{\n} by itself
1462stringifies to @t{"\n"}.
1463
1464All leading and trailing whitespace in text being stringified is
1465ignored.  Any sequence of whitespace in the middle of the text is
1466converted to a single space in the stringified result.  Comments are
1467replaced by whitespace long before stringification happens, so they
1468never appear in stringified text.
1469
1470There is no way to convert a macro argument into a character constant.
1471
1472If you want to stringify the result of expansion of a macro argument,
1473you have to use two levels of macros.
1474
1475@example
1476#define xstr(s) str(s)
1477#define str(s) #s
1478#define foo 4
1479str (foo)
1480     @expansion{} "foo"
1481xstr (foo)
1482     @expansion{} xstr (4)
1483     @expansion{} str (4)
1484     @expansion{} "4"
1485@end example
1486
1487@code{s} is stringified when it is used in @code{str}, so it is not
1488macro-expanded first.  But @code{s} is an ordinary argument to
1489@code{xstr}, so it is completely macro-expanded before @code{xstr}
1490itself is expanded (@pxref{Argument Prescan}).  Therefore, by the time
1491@code{str} gets to its argument, it has already been macro-expanded.
1492
1493@node Concatenation
1494@section Concatenation
1495@cindex concatenation
1496@cindex token pasting
1497@cindex token concatenation
1498@cindex @samp{##} operator
1499
1500It is often useful to merge two tokens into one while expanding macros.
1501This is called @dfn{token pasting} or @dfn{token concatenation}.  The
1502@samp{##} preprocessing operator performs token pasting.  When a macro
1503is expanded, the two tokens on either side of each @samp{##} operator
1504are combined into a single token, which then replaces the @samp{##} and
1505the two original tokens in the macro expansion.  Usually both will be
1506identifiers, or one will be an identifier and the other a preprocessing
1507number.  When pasted, they make a longer identifier.  This isn't the
1508only valid case.  It is also possible to concatenate two numbers (or a
1509number and a name, such as @code{1.5} and @code{e3}) into a number.
1510Also, multi-character operators such as @code{+=} can be formed by
1511token pasting.
1512
1513However, two tokens that don't together form a valid token cannot be
1514pasted together.  For example, you cannot concatenate @code{x} with
1515@code{+} in either order.  If you try, the preprocessor issues a warning
1516and emits the two tokens.  Whether it puts white space between the
1517tokens is undefined.  It is common to find unnecessary uses of @samp{##}
1518in complex macros.  If you get this warning, it is likely that you can
1519simply remove the @samp{##}.
1520
1521Both the tokens combined by @samp{##} could come from the macro body,
1522but you could just as well write them as one token in the first place.
1523Token pasting is most useful when one or both of the tokens comes from a
1524macro argument.  If either of the tokens next to an @samp{##} is a
1525parameter name, it is replaced by its actual argument before @samp{##}
1526executes.  As with stringification, the actual argument is not
1527macro-expanded first.  If the argument is empty, that @samp{##} has no
1528effect.
1529
1530Keep in mind that the C preprocessor converts comments to whitespace
1531before macros are even considered.  Therefore, you cannot create a
1532comment by concatenating @samp{/} and @samp{*}.  You can put as much
1533whitespace between @samp{##} and its operands as you like, including
1534comments, and you can put comments in arguments that will be
1535concatenated.  However, it is an error if @samp{##} appears at either
1536end of a macro body.
1537
1538Consider a C program that interprets named commands.  There probably
1539needs to be a table of commands, perhaps an array of structures declared
1540as follows:
1541
1542@example
1543@group
1544struct command
1545@{
1546  char *name;
1547  void (*function) (void);
1548@};
1549@end group
1550
1551@group
1552struct command commands[] =
1553@{
1554  @{ "quit", quit_command @},
1555  @{ "help", help_command @},
1556  @dots{}
1557@};
1558@end group
1559@end example
1560
1561It would be cleaner not to have to give each command name twice, once in
1562the string constant and once in the function name.  A macro which takes the
1563name of a command as an argument can make this unnecessary.  The string
1564constant can be created with stringification, and the function name by
1565concatenating the argument with @samp{_command}.  Here is how it is done:
1566
1567@example
1568#define COMMAND(NAME)  @{ #NAME, NAME ## _command @}
1569
1570struct command commands[] =
1571@{
1572  COMMAND (quit),
1573  COMMAND (help),
1574  @dots{}
1575@};
1576@end example
1577
1578@node Variadic Macros
1579@section Variadic Macros
1580@cindex variable number of arguments
1581@cindex macros with variable arguments
1582@cindex variadic macros
1583
1584A macro can be declared to accept a variable number of arguments much as
1585a function can.  The syntax for defining the macro is similar to that of
1586a function.  Here is an example:
1587
1588@example
1589#define eprintf(@dots{}) fprintf (stderr, __VA_ARGS__)
1590@end example
1591
1592This kind of macro is called @dfn{variadic}.  When the macro is invoked,
1593all the tokens in its argument list after the last named argument (this
1594macro has none), including any commas, become the @dfn{variable
1595argument}.  This sequence of tokens replaces the identifier
1596@code{@w{__VA_ARGS__}} in the macro body wherever it appears.  Thus, we
1597have this expansion:
1598
1599@example
1600eprintf ("%s:%d: ", input_file, lineno)
1601     @expansion{}  fprintf (stderr, "%s:%d: ", input_file, lineno)
1602@end example
1603
1604The variable argument is completely macro-expanded before it is inserted
1605into the macro expansion, just like an ordinary argument.  You may use
1606the @samp{#} and @samp{##} operators to stringify the variable argument
1607or to paste its leading or trailing token with another token.  (But see
1608below for an important special case for @samp{##}.)
1609
1610If your macro is complicated, you may want a more descriptive name for
1611the variable argument than @code{@w{__VA_ARGS__}}.  GNU CPP permits
1612this, as an extension.  You may write an argument name immediately
1613before the @samp{@dots{}}; that name is used for the variable argument.
1614The @code{eprintf} macro above could be written
1615
1616@example
1617#define eprintf(args@dots{}) fprintf (stderr, args)
1618@end example
1619
1620@noindent
1621using this extension.  You cannot use @code{__VA_ARGS__} and this
1622extension in the same macro.
1623
1624You can have named arguments as well as variable arguments in a variadic
1625macro.  We could define @code{eprintf} like this, instead:
1626
1627@example
1628#define eprintf(format, @dots{}) fprintf (stderr, format, __VA_ARGS__)
1629@end example
1630
1631@noindent
1632This formulation looks more descriptive, but unfortunately it is less
1633flexible: you must now supply at least one argument after the format
1634string.  In standard C, you cannot omit the comma separating the named
1635argument from the variable arguments.  Furthermore, if you leave the
1636variable argument empty, you will get a syntax error, because
1637there will be an extra comma after the format string.
1638
1639@example
1640eprintf("success!\n", );
1641     @expansion{} fprintf(stderr, "success!\n", );
1642@end example
1643
1644GNU CPP has a pair of extensions which deal with this problem.  First,
1645you are allowed to leave the variable argument out entirely:
1646
1647@example
1648eprintf ("success!\n")
1649     @expansion{} fprintf(stderr, "success!\n", );
1650@end example
1651
1652@noindent
1653Second, the @samp{##} token paste operator has a special meaning when
1654placed between a comma and a variable argument.  If you write
1655
1656@example
1657#define eprintf(format, @dots{}) fprintf (stderr, format, ##__VA_ARGS__)
1658@end example
1659
1660@noindent
1661and the variable argument is left out when the @code{eprintf} macro is
1662used, then the comma before the @samp{##} will be deleted.  This does
1663@emph{not} happen if you pass an empty argument, nor does it happen if
1664the token preceding @samp{##} is anything other than a comma.
1665
1666@example
1667eprintf ("success!\n")
1668     @expansion{} fprintf(stderr, "success!\n");
1669@end example
1670
1671C99 mandates that the only place the identifier @code{@w{__VA_ARGS__}}
1672can appear is in the replacement list of a variadic macro.  It may not
1673be used as a macro name, macro argument name, or within a different type
1674of macro.  It may also be forbidden in open text; the standard is
1675ambiguous.  We recommend you avoid using it except for its defined
1676purpose.
1677
1678Variadic macros are a new feature in C99.  GNU CPP has supported them
1679for a long time, but only with a named variable argument
1680(@samp{args@dots{}}, not @samp{@dots{}} and @code{@w{__VA_ARGS__}}).  If you are
1681concerned with portability to previous versions of GCC, you should use
1682only named variable arguments.  On the other hand, if you are concerned
1683with portability to other conforming implementations of C99, you should
1684use only @code{@w{__VA_ARGS__}}.
1685
1686Previous versions of GNU CPP implemented the comma-deletion extension
1687much more generally.  We have restricted it in this release to minimize
1688the differences from C99.  To get the same effect with both this and
1689previous versions of GCC, the token preceding the special @samp{##} must
1690be a comma, and there must be white space between that comma and
1691whatever comes immediately before it:
1692
1693@example
1694#define eprintf(format, args@dots{}) fprintf (stderr, format , ##args)
1695@end example
1696
1697@noindent
1698@xref{Differences from previous versions}, for the gory details.
1699
1700@node Predefined Macros
1701@section Predefined Macros
1702
1703@cindex predefined macros
1704Several object-like macros are predefined; you use them without
1705supplying their definitions.  They fall into three classes: standard,
1706common, and system-specific.
1707
1708In C++, there is a fourth category, the named operators.  They act like
1709predefined macros, but you cannot undefine them.
1710
1711@menu
1712* Standard Predefined Macros::
1713* Common Predefined Macros::
1714* System-specific Predefined Macros::
1715* C++ Named Operators::
1716@end menu
1717
1718@node Standard Predefined Macros
1719@subsection Standard Predefined Macros
1720@cindex standard predefined macros.
1721
1722The standard predefined macros are specified by the C and/or C++
1723language standards, so they are available with all compilers that
1724implement those standards.  Older compilers may not provide all of
1725them.  Their names all start with double underscores.
1726
1727@table @code
1728@item __FILE__
1729This macro expands to the name of the current input file, in the form of
1730a C string constant.  This is the path by which the preprocessor opened
1731the file, not the short name specified in @samp{#include} or as the
1732input file name argument.  For example,
1733@code{"/usr/local/include/myheader.h"} is a possible expansion of this
1734macro.
1735
1736@item __LINE__
1737This macro expands to the current input line number, in the form of a
1738decimal integer constant.  While we call it a predefined macro, it's
1739a pretty strange macro, since its ``definition'' changes with each
1740new line of source code.
1741@end table
1742
1743@code{__FILE__} and @code{__LINE__} are useful in generating an error
1744message to report an inconsistency detected by the program; the message
1745can state the source line at which the inconsistency was detected.  For
1746example,
1747
1748@example
1749fprintf (stderr, "Internal error: "
1750                 "negative string length "
1751                 "%d at %s, line %d.",
1752         length, __FILE__, __LINE__);
1753@end example
1754
1755An @samp{#include} directive changes the expansions of @code{__FILE__}
1756and @code{__LINE__} to correspond to the included file.  At the end of
1757that file, when processing resumes on the input file that contained
1758the @samp{#include} directive, the expansions of @code{__FILE__} and
1759@code{__LINE__} revert to the values they had before the
1760@samp{#include} (but @code{__LINE__} is then incremented by one as
1761processing moves to the line after the @samp{#include}).
1762
1763A @samp{#line} directive changes @code{__LINE__}, and may change
1764@code{__FILE__} as well.  @xref{Line Control}.
1765
1766C99 introduces @code{__func__}, and GCC has provided @code{__FUNCTION__}
1767for a long time.  Both of these are strings containing the name of the
1768current function (there are slight semantic differences; see the GCC
1769manual).  Neither of them is a macro; the preprocessor does not know the
1770name of the current function.  They tend to be useful in conjunction
1771with @code{__FILE__} and @code{__LINE__}, though.
1772
1773@table @code
1774
1775@item __DATE__
1776This macro expands to a string constant that describes the date on which
1777the preprocessor is being run.  The string constant contains eleven
1778characters and looks like @code{@w{"Feb 12 1996"}}.  If the day of the
1779month is less than 10, it is padded with a space on the left.
1780
1781@item __TIME__
1782This macro expands to a string constant that describes the time at
1783which the preprocessor is being run.  The string constant contains
1784eight characters and looks like @code{"23:59:01"}.
1785
1786@item __STDC__
1787In normal operation, this macro expands to the constant 1, to signify
1788that this compiler conforms to ISO Standard C@.  If GNU CPP is used with
1789a compiler other than GCC, this is not necessarily true; however, the
1790preprocessor always conforms to the standard, unless the
1791@option{-traditional} option is used.
1792
1793This macro is not defined if the @option{-traditional} option is used.
1794
1795On some hosts, the system compiler uses a different convention, where
1796@code{__STDC__} is normally 0, but is 1 if the user specifies strict
1797conformance to the C Standard.  GNU CPP follows the host convention when
1798processing system header files, but when processing user files
1799@code{__STDC__} is always 1.  This has been reported to cause problems;
1800for instance, some versions of Solaris provide X Windows headers that
1801expect @code{__STDC__} to be either undefined or 1.  You may be able to
1802work around this sort of problem by using an @option{-I} option to
1803cancel treatment of those headers as system headers.  @xref{Invocation}.
1804
1805@item __STDC_VERSION__
1806This macro expands to the C Standard's version number, a long integer
1807constant of the form @code{@var{yyyy}@var{mm}L} where @var{yyyy} and
1808@var{mm} are the year and month of the Standard version.  This signifies
1809which version of the C Standard the compiler conforms to.  Like
1810@code{__STDC__}, this is not necessarily accurate for the entire
1811implementation, unless GNU CPP is being used with GCC@.
1812
1813The value @code{199409L} signifies the 1989 C standard as amended in
18141994, which is the current default; the value @code{199901L} signifies
1815the 1999 revision of the C standard.  Support for the 1999 revision is
1816not yet complete.
1817
1818This macro is not defined if the @option{-traditional} option is used, nor
1819when compiling C++ or Objective-C@.
1820
1821@item __STDC_HOSTED__
1822This macro is defined, with value 1, if the compiler's target is a
1823@dfn{hosted environment}.  A hosted environment has the complete
1824facilities of the standard C library available.
1825
1826@item __cplusplus
1827This macro is defined when the C++ compiler is in use.  You can use
1828@code{__cplusplus} to test whether a header is compiled by a C compiler
1829or a C++ compiler.  This macro is similar to @code{__STDC_VERSION__}, in
1830that it expands to a version number.  A fully conforming implementation
1831of the 1998 C++ standard will define this macro to @code{199711L}.  The
1832GNU C++ compiler is not yet fully conforming, so it uses @code{1}
1833instead.  We hope to complete our implementation in the near future.
1834
1835@end table
1836
1837@node Common Predefined Macros
1838@subsection Common Predefined Macros
1839@cindex common predefined macros
1840
1841The common predefined macros are GNU C extensions.  They are available
1842with the same meanings regardless of the machine or operating system on
1843which you are using GNU C@.  Their names all start with double
1844underscores.
1845
1846@table @code
1847
1848@item __GNUC__
1849@itemx __GNUC_MINOR__
1850@itemx __GNUC_PATCHLEVEL__
1851These macros are defined by all GNU compilers that use the C
1852preprocessor: C, C++, and Objective-C@.  Their values are the major
1853version, minor version, and patch level of the compiler, as integer
1854constants.  For example, GCC 3.2.1 will define @code{__GNUC__} to 3,
1855@code{__GNUC_MINOR__} to 2, and @code{__GNUC_PATCHLEVEL__} to 1.  They
1856are defined only when the entire compiler is in use; if you invoke the
1857preprocessor directly, they are not defined.
1858
1859@code{__GNUC_PATCHLEVEL__} is new to GCC 3.0; it is also present in the
1860widely-used development snapshots leading up to 3.0 (which identify
1861themselves as GCC 2.96 or 2.97, depending on which snapshot you have).
1862
1863If all you need to know is whether or not your program is being compiled
1864by GCC, you can simply test @code{__GNUC__}.  If you need to write code
1865which depends on a specific version, you must be more careful.  Each
1866time the minor version is increased, the patch level is reset to zero;
1867each time the major version is increased (which happens rarely), the
1868minor version and patch level are reset.  If you wish to use the
1869predefined macros directly in the conditional, you will need to write it
1870like this:
1871
1872@example
1873/* @r{Test for GCC > 3.2.0} */
1874#if __GNUC__ > 3 || \
1875    (__GNUC__ == 3 && (__GNUC_MINOR__ > 2 || \
1876                       (__GNUC_MINOR__ == 2 && \
1877                        __GNUC_PATCHLEVEL__ > 0))
1878@end example
1879
1880@noindent
1881Another approach is to use the predefined macros to
1882calculate a single number, then compare that against a threshold:
1883
1884@example
1885#define GCC_VERSION (__GNUC__ * 10000 \
1886                     + __GNUC_MINOR__ * 100 \
1887                     + __GNUC_PATCHLEVEL__)
1888@dots{}
1889/* @r{Test for GCC > 3.2.0} */
1890#if GCC_VERSION > 30200
1891@end example
1892
1893@noindent
1894Many people find this form easier to understand.
1895
1896@item __OBJC__
1897This macro is defined, with value 1, when the Objective-C compiler is in
1898use.  You can use @code{__OBJC__} to test whether a header is compiled
1899by a C compiler or a Objective-C compiler.
1900
1901@item __GNUG__
1902The GNU C++ compiler defines this.  Testing it is equivalent to
1903testing @code{@w{(__GNUC__ && __cplusplus)}}.
1904
1905@item __STRICT_ANSI__
1906GCC defines this macro if and only if the @option{-ansi} switch, or a
1907@option{-std} switch specifying strict conformance to some version of ISO C,
1908was specified when GCC was invoked.  It is defined to @samp{1}.
1909This macro exists primarily to direct GNU libc's header files to
1910restrict their definitions to the minimal set found in the 1989 C
1911standard.
1912
1913@item __BASE_FILE__
1914This macro expands to the name of the main input file, in the form
1915of a C string constant.  This is the source file that was specified
1916on the command line of the preprocessor or C compiler.
1917
1918@item __INCLUDE_LEVEL__
1919This macro expands to a decimal integer constant that represents the
1920depth of nesting in include files.  The value of this macro is
1921incremented on every @samp{#include} directive and decremented at the
1922end of every included file.  It starts out at 0, it's value within the
1923base file specified on the command line.
1924
1925@item __VERSION__
1926This macro expands to a string constant which describes the version of
1927the compiler in use.  You should not rely on its contents having any
1928particular form, but it can be counted on to contain at least the
1929release number.
1930
1931@item __OPTIMIZE__
1932@itemx __OPTIMIZE_SIZE__
1933@itemx __NO_INLINE__
1934These macros describe the compilation mode.  @code{__OPTIMIZE__} is
1935defined in all optimizing compilations.  @code{__OPTIMIZE_SIZE__} is
1936defined if the compiler is optimizing for size, not speed.
1937@code{__NO_INLINE__} is defined if no functions will be inlined into
1938their callers (when not optimizing, or when inlining has been
1939specifically disabled by @option{-fno-inline}).
1940
1941These macros cause certain GNU header files to provide optimized
1942definitions, using macros or inline functions, of system library
1943functions.  You should not use these macros in any way unless you make
1944sure that programs will execute with the same effect whether or not they
1945are defined.  If they are defined, their value is 1.
1946
1947@item __CHAR_UNSIGNED__
1948GCC defines this macro if and only if the data type @code{char} is
1949unsigned on the target machine.  It exists to cause the standard header
1950file @file{limits.h} to work correctly.  You should not use this macro
1951yourself; instead, refer to the standard macros defined in @file{limits.h}.
1952
1953@item __REGISTER_PREFIX__
1954This macro expands to a single token (not a string constant) which is
1955the prefix applied to CPU register names in assembly language for this
1956target.  You can use it to write assembly that is usable in multiple
1957environments.  For example, in the @code{m68k-aout} environment it
1958expands to nothing, but in the @code{m68k-coff} environment it expands
1959to a single @samp{%}.
1960
1961@item __USER_LABEL_PREFIX__
1962This macro expands to a single token which is the prefix applied to
1963user labels (symbols visible to C code) in assembly.  For example, in
1964the @code{m68k-aout} environment it expands to an @samp{_}, but in the
1965@code{m68k-coff} environment it expands to nothing.
1966
1967This macro will have the correct definition even if
1968@option{-f(no-)underscores} is in use, but it will not be correct if
1969target-specific options that adjust this prefix are used (e.g.@: the
1970OSF/rose @option{-mno-underscores} option).
1971
1972@item __SIZE_TYPE__
1973@itemx __PTRDIFF_TYPE__
1974@itemx __WCHAR_TYPE__
1975@itemx __WINT_TYPE__
1976These macros are defined to the correct underlying types for the
1977@code{size_t}, @code{ptrdiff_t}, @code{wchar_t}, and @code{wint_t}
1978typedefs, respectively.  They exist to make the standard header files
1979@file{stddef.h} and @file{wchar.h} work correctly.  You should not use
1980these macros directly; instead, include the appropriate headers and use
1981the typedefs.
1982
1983@item __USING_SJLJ_EXCEPTIONS__
1984This macro is defined, with value 1, if the compiler uses the old
1985mechanism based on @code{setjmp} and @code{longjmp} for exception
1986handling.
1987@end table
1988
1989@node System-specific Predefined Macros
1990@subsection System-specific Predefined Macros
1991
1992@cindex system-specific predefined macros
1993@cindex predefined macros, system-specific
1994@cindex reserved namespace
1995
1996The C preprocessor normally predefines several macros that indicate what
1997type of system and machine is in use.  They are obviously different on
1998each target supported by GCC@.  This manual, being for all systems and
1999machines, cannot tell you what their names are, but you can use
2000@command{cpp -dM} to see them all.  @xref{Invocation}.  All system-specific
2001predefined macros expand to the constant 1, so you can test them with
2002either @samp{#ifdef} or @samp{#if}.
2003
2004The C standard requires that all system-specific macros be part of the
2005@dfn{reserved namespace}.  All names which begin with two underscores,
2006or an underscore and a capital letter, are reserved for the compiler and
2007library to use as they wish.  However, historically system-specific
2008macros have had names with no special prefix; for instance, it is common
2009to find @code{unix} defined on Unix systems.  For all such macros, GCC
2010provides a parallel macro with two underscores added at the beginning
2011and the end.  If @code{unix} is defined, @code{__unix__} will be defined
2012too.  There will never be more than two underscores; the parallel of
2013@code{_mips} is @code{__mips__}.
2014
2015When the @option{-ansi} option, or any @option{-std} option that
2016requests strict conformance, is given to the compiler, all the
2017system-specific predefined macros outside the reserved namespace are
2018suppressed.  The parallel macros, inside the reserved namespace, remain
2019defined.
2020
2021We are slowly phasing out all predefined macros which are outside the
2022reserved namespace.  You should never use them in new programs, and we
2023encourage you to correct older code to use the parallel macros whenever
2024you find it.  We don't recommend you use the system-specific macros that
2025are in the reserved namespace, either.  It is better in the long run to
2026check specifically for features you need, using a tool such as
2027@command{autoconf}.
2028
2029@node C++ Named Operators
2030@subsection C++ Named Operators
2031@cindex named operators
2032@cindex C++ named operators
2033@cindex iso646.h
2034
2035In C++, there are eleven keywords which are simply alternate spellings
2036of operators normally written with punctuation.  These keywords are
2037treated as such even in the preprocessor.  They function as operators in
2038@samp{#if}, and they cannot be defined as macros or poisoned.  In C, you
2039can request that those keywords take their C++ meaning by including
2040@file{iso646.h}.  That header defines each one as a normal object-like
2041macro expanding to the appropriate punctuator.
2042
2043These are the named operators and their corresponding punctuators:
2044
2045@multitable {Named Operator} {Punctuator}
2046@item Named Operator @tab Punctuator
2047@item @code{and}    @tab @code{&&}
2048@item @code{and_eq} @tab @code{&=}
2049@item @code{bitand} @tab @code{&}
2050@item @code{bitor}  @tab @code{|}
2051@item @code{compl}  @tab @code{~}
2052@item @code{not}    @tab @code{!}
2053@item @code{not_eq} @tab @code{!=}
2054@item @code{or}     @tab @code{||}
2055@item @code{or_eq}  @tab @code{|=}
2056@item @code{xor}    @tab @code{^}
2057@item @code{xor_eq} @tab @code{^=}
2058@end multitable
2059
2060@node Undefining and Redefining Macros
2061@section Undefining and Redefining Macros
2062@cindex undefining macros
2063@cindex redefining macros
2064@findex #undef
2065
2066If a macro ceases to be useful, it may be @dfn{undefined} with the
2067@samp{#undef} directive.  @samp{#undef} takes a single argument, the
2068name of the macro to undefine.  You use the bare macro name, even if the
2069macro is function-like.  It is an error if anything appears on the line
2070after the macro name.  @samp{#undef} has no effect if the name is not a
2071macro.
2072
2073@example
2074#define FOO 4
2075x = FOO;        @expansion{} x = 4;
2076#undef FOO
2077x = FOO;        @expansion{} x = FOO;
2078@end example
2079
2080Once a macro has been undefined, that identifier may be @dfn{redefined}
2081as a macro by a subsequent @samp{#define} directive.  The new definition
2082need not have any resemblance to the old definition.
2083
2084However, if an identifier which is currently a macro is redefined, then
2085the new definition must be @dfn{effectively the same} as the old one.
2086Two macro definitions are effectively the same if:
2087@itemize @bullet
2088@item Both are the same type of macro (object- or function-like).
2089@item All the tokens of the replacement list are the same.
2090@item If there are any parameters, they are the same.
2091@item Whitespace appears in the same places in both.  It need not be
2092exactly the same amount of whitespace, though.  Remember that comments
2093count as whitespace.
2094@end itemize
2095
2096@noindent
2097These definitions are effectively the same:
2098@example
2099#define FOUR (2 + 2)
2100#define FOUR         (2    +    2)
2101#define FOUR (2 /* two */ + 2)
2102@end example
2103@noindent
2104but these are not:
2105@example
2106#define FOUR (2 + 2)
2107#define FOUR ( 2+2 )
2108#define FOUR (2 * 2)
2109#define FOUR(score,and,seven,years,ago) (2 + 2)
2110@end example
2111
2112If a macro is redefined with a definition that is not effectively the
2113same as the old one, the preprocessor issues a warning and changes the
2114macro to use the new definition.  If the new definition is effectively
2115the same, the redefinition is silently ignored.  This allows, for
2116instance, two different headers to define a common macro.  The
2117preprocessor will only complain if the definitions do not match.
2118
2119@node Macro Pitfalls
2120@section Macro Pitfalls
2121@cindex problems with macros
2122@cindex pitfalls of macros
2123
2124In this section we describe some special rules that apply to macros and
2125macro expansion, and point out certain cases in which the rules have
2126counter-intuitive consequences that you must watch out for.
2127
2128@menu
2129* Misnesting::
2130* Operator Precedence Problems::
2131* Swallowing the Semicolon::
2132* Duplication of Side Effects::
2133* Self-Referential Macros::
2134* Argument Prescan::
2135* Newlines in Arguments::
2136@end menu
2137
2138@node Misnesting
2139@subsection Misnesting
2140
2141When a macro is called with arguments, the arguments are substituted
2142into the macro body and the result is checked, together with the rest of
2143the input file, for more macro calls.  It is possible to piece together
2144a macro call coming partially from the macro body and partially from the
2145arguments.  For example,
2146
2147@example
2148#define twice(x) (2*(x))
2149#define call_with_1(x) x(1)
2150call_with_1 (twice)
2151     @expansion{} twice(1)
2152     @expansion{} (2*(1))
2153@end example
2154
2155Macro definitions do not have to have balanced parentheses.  By writing
2156an unbalanced open parenthesis in a macro body, it is possible to create
2157a macro call that begins inside the macro body but ends outside of it.
2158For example,
2159
2160@example
2161#define strange(file) fprintf (file, "%s %d",
2162@dots{}
2163strange(stderr) p, 35)
2164     @expansion{} fprintf (stderr, "%s %d", p, 35)
2165@end example
2166
2167The ability to piece together a macro call can be useful, but the use of
2168unbalanced open parentheses in a macro body is just confusing, and
2169should be avoided.
2170
2171@node Operator Precedence Problems
2172@subsection Operator Precedence Problems
2173@cindex parentheses in macro bodies
2174
2175You may have noticed that in most of the macro definition examples shown
2176above, each occurrence of a macro argument name had parentheses around
2177it.  In addition, another pair of parentheses usually surround the
2178entire macro definition.  Here is why it is best to write macros that
2179way.
2180
2181Suppose you define a macro as follows,
2182
2183@example
2184#define ceil_div(x, y) (x + y - 1) / y
2185@end example
2186
2187@noindent
2188whose purpose is to divide, rounding up.  (One use for this operation is
2189to compute how many @code{int} objects are needed to hold a certain
2190number of @code{char} objects.)  Then suppose it is used as follows:
2191
2192@example
2193a = ceil_div (b & c, sizeof (int));
2194     @expansion{} a = (b & c + sizeof (int) - 1) / sizeof (int);
2195@end example
2196
2197@noindent
2198This does not do what is intended.  The operator-precedence rules of
2199C make it equivalent to this:
2200
2201@example
2202a = (b & (c + sizeof (int) - 1)) / sizeof (int);
2203@end example
2204
2205@noindent
2206What we want is this:
2207
2208@example
2209a = ((b & c) + sizeof (int) - 1)) / sizeof (int);
2210@end example
2211
2212@noindent
2213Defining the macro as
2214
2215@example
2216#define ceil_div(x, y) ((x) + (y) - 1) / (y)
2217@end example
2218
2219@noindent
2220provides the desired result.
2221
2222Unintended grouping can result in another way.  Consider @code{sizeof
2223ceil_div(1, 2)}.  That has the appearance of a C expression that would
2224compute the size of the type of @code{ceil_div (1, 2)}, but in fact it
2225means something very different.  Here is what it expands to:
2226
2227@example
2228sizeof ((1) + (2) - 1) / (2)
2229@end example
2230
2231@noindent
2232This would take the size of an integer and divide it by two.  The
2233precedence rules have put the division outside the @code{sizeof} when it
2234was intended to be inside.
2235
2236Parentheses around the entire macro definition prevent such problems.
2237Here, then, is the recommended way to define @code{ceil_div}:
2238
2239@example
2240#define ceil_div(x, y) (((x) + (y) - 1) / (y))
2241@end example
2242
2243@node Swallowing the Semicolon
2244@subsection Swallowing the Semicolon
2245@cindex semicolons (after macro calls)
2246
2247Often it is desirable to define a macro that expands into a compound
2248statement.  Consider, for example, the following macro, that advances a
2249pointer (the argument @code{p} says where to find it) across whitespace
2250characters:
2251
2252@example
2253#define SKIP_SPACES(p, limit)  \
2254@{ char *lim = (limit);         \
2255  while (p < lim) @{            \
2256    if (*p++ != ' ') @{         \
2257      p--; break; @}@}@}
2258@end example
2259
2260@noindent
2261Here backslash-newline is used to split the macro definition, which must
2262be a single logical line, so that it resembles the way such code would
2263be laid out if not part of a macro definition.
2264
2265A call to this macro might be @code{SKIP_SPACES (p, lim)}.  Strictly
2266speaking, the call expands to a compound statement, which is a complete
2267statement with no need for a semicolon to end it.  However, since it
2268looks like a function call, it minimizes confusion if you can use it
2269like a function call, writing a semicolon afterward, as in
2270@code{SKIP_SPACES (p, lim);}
2271
2272This can cause trouble before @code{else} statements, because the
2273semicolon is actually a null statement.  Suppose you write
2274
2275@example
2276if (*p != 0)
2277  SKIP_SPACES (p, lim);
2278else @dots{}
2279@end example
2280
2281@noindent
2282The presence of two statements---the compound statement and a null
2283statement---in between the @code{if} condition and the @code{else}
2284makes invalid C code.
2285
2286The definition of the macro @code{SKIP_SPACES} can be altered to solve
2287this problem, using a @code{do @dots{} while} statement.  Here is how:
2288
2289@example
2290#define SKIP_SPACES(p, limit)     \
2291do @{ char *lim = (limit);         \
2292     while (p < lim) @{            \
2293       if (*p++ != ' ') @{         \
2294         p--; break; @}@}@}          \
2295while (0)
2296@end example
2297
2298Now @code{SKIP_SPACES (p, lim);} expands into
2299
2300@example
2301do @{@dots{}@} while (0);
2302@end example
2303
2304@noindent
2305which is one statement.  The loop executes exactly once; most compilers
2306generate no extra code for it.
2307
2308@node Duplication of Side Effects
2309@subsection Duplication of Side Effects
2310
2311@cindex side effects (in macro arguments)
2312@cindex unsafe macros
2313Many C programs define a macro @code{min}, for ``minimum'', like this:
2314
2315@example
2316#define min(X, Y)  ((X) < (Y) ? (X) : (Y))
2317@end example
2318
2319When you use this macro with an argument containing a side effect,
2320as shown here,
2321
2322@example
2323next = min (x + y, foo (z));
2324@end example
2325
2326@noindent
2327it expands as follows:
2328
2329@example
2330next = ((x + y) < (foo (z)) ? (x + y) : (foo (z)));
2331@end example
2332
2333@noindent
2334where @code{x + y} has been substituted for @code{X} and @code{foo (z)}
2335for @code{Y}.
2336
2337The function @code{foo} is used only once in the statement as it appears
2338in the program, but the expression @code{foo (z)} has been substituted
2339twice into the macro expansion.  As a result, @code{foo} might be called
2340two times when the statement is executed.  If it has side effects or if
2341it takes a long time to compute, the results might not be what you
2342intended.  We say that @code{min} is an @dfn{unsafe} macro.
2343
2344The best solution to this problem is to define @code{min} in a way that
2345computes the value of @code{foo (z)} only once.  The C language offers
2346no standard way to do this, but it can be done with GNU extensions as
2347follows:
2348
2349@example
2350#define min(X, Y)                \
2351(@{ typeof (X) x_ = (X);          \
2352   typeof (Y) y_ = (Y);          \
2353   (x_ < y_) ? x_ : y_; @})
2354@end example
2355
2356The @samp{(@{ @dots{} @})} notation produces a compound statement that
2357acts as an expression.  Its value is the value of its last statement.
2358This permits us to define local variables and assign each argument to
2359one.  The local variables have underscores after their names to reduce
2360the risk of conflict with an identifier of wider scope (it is impossible
2361to avoid this entirely).  Now each argument is evaluated exactly once.
2362
2363If you do not wish to use GNU C extensions, the only solution is to be
2364careful when @emph{using} the macro @code{min}.  For example, you can
2365calculate the value of @code{foo (z)}, save it in a variable, and use
2366that variable in @code{min}:
2367
2368@example
2369@group
2370#define min(X, Y)  ((X) < (Y) ? (X) : (Y))
2371@dots{}
2372@{
2373  int tem = foo (z);
2374  next = min (x + y, tem);
2375@}
2376@end group
2377@end example
2378
2379@noindent
2380(where we assume that @code{foo} returns type @code{int}).
2381
2382@node Self-Referential Macros
2383@subsection Self-Referential Macros
2384@cindex self-reference
2385
2386A @dfn{self-referential} macro is one whose name appears in its
2387definition.  Recall that all macro definitions are rescanned for more
2388macros to replace.  If the self-reference were considered a use of the
2389macro, it would produce an infinitely large expansion.  To prevent this,
2390the self-reference is not considered a macro call.  It is passed into
2391the preprocessor output unchanged.  Let's consider an example:
2392
2393@example
2394#define foo (4 + foo)
2395@end example
2396
2397@noindent
2398where @code{foo} is also a variable in your program.
2399
2400Following the ordinary rules, each reference to @code{foo} will expand
2401into @code{(4 + foo)}; then this will be rescanned and will expand into
2402@code{(4 + (4 + foo))}; and so on until the computer runs out of memory.
2403
2404The self-reference rule cuts this process short after one step, at
2405@code{(4 + foo)}.  Therefore, this macro definition has the possibly
2406useful effect of causing the program to add 4 to the value of @code{foo}
2407wherever @code{foo} is referred to.
2408
2409In most cases, it is a bad idea to take advantage of this feature.  A
2410person reading the program who sees that @code{foo} is a variable will
2411not expect that it is a macro as well.  The reader will come across the
2412identifier @code{foo} in the program and think its value should be that
2413of the variable @code{foo}, whereas in fact the value is four greater.
2414
2415One common, useful use of self-reference is to create a macro which
2416expands to itself.  If you write
2417
2418@example
2419#define EPERM EPERM
2420@end example
2421
2422@noindent
2423then the macro @code{EPERM} expands to @code{EPERM}.  Effectively, it is
2424left alone by the preprocessor whenever it's used in running text.  You
2425can tell that it's a macro with @samp{#ifdef}.  You might do this if you
2426want to define numeric constants with an @code{enum}, but have
2427@samp{#ifdef} be true for each constant.
2428
2429If a macro @code{x} expands to use a macro @code{y}, and the expansion of
2430@code{y} refers to the macro @code{x}, that is an @dfn{indirect
2431self-reference} of @code{x}.  @code{x} is not expanded in this case
2432either.  Thus, if we have
2433
2434@example
2435#define x (4 + y)
2436#define y (2 * x)
2437@end example
2438
2439@noindent
2440then @code{x} and @code{y} expand as follows:
2441
2442@example
2443@group
2444x    @expansion{} (4 + y)
2445     @expansion{} (4 + (2 * x))
2446
2447y    @expansion{} (2 * x)
2448     @expansion{} (2 * (4 + y))
2449@end group
2450@end example
2451
2452@noindent
2453Each macro is expanded when it appears in the definition of the other
2454macro, but not when it indirectly appears in its own definition.
2455
2456@node Argument Prescan
2457@subsection Argument Prescan
2458@cindex expansion of arguments
2459@cindex macro argument expansion
2460@cindex prescan of macro arguments
2461
2462Macro arguments are completely macro-expanded before they are
2463substituted into a macro body, unless they are stringified or pasted
2464with other tokens.  After substitution, the entire macro body, including
2465the substituted arguments, is scanned again for macros to be expanded.
2466The result is that the arguments are scanned @emph{twice} to expand
2467macro calls in them.
2468
2469Most of the time, this has no effect.  If the argument contained any
2470macro calls, they are expanded during the first scan.  The result
2471therefore contains no macro calls, so the second scan does not change
2472it.  If the argument were substituted as given, with no prescan, the
2473single remaining scan would find the same macro calls and produce the
2474same results.
2475
2476You might expect the double scan to change the results when a
2477self-referential macro is used in an argument of another macro
2478(@pxref{Self-Referential Macros}): the self-referential macro would be
2479expanded once in the first scan, and a second time in the second scan.
2480However, this is not what happens.  The self-references that do not
2481expand in the first scan are marked so that they will not expand in the
2482second scan either.
2483
2484You might wonder, ``Why mention the prescan, if it makes no difference?
2485And why not skip it and make the preprocessor faster?''  The answer is
2486that the prescan does make a difference in three special cases:
2487
2488@itemize @bullet
2489@item
2490Nested calls to a macro.
2491
2492We say that @dfn{nested} calls to a macro occur when a macro's argument
2493contains a call to that very macro.  For example, if @code{f} is a macro
2494that expects one argument, @code{f (f (1))} is a nested pair of calls to
2495@code{f}.  The desired expansion is made by expanding @code{f (1)} and
2496substituting that into the definition of @code{f}.  The prescan causes
2497the expected result to happen.  Without the prescan, @code{f (1)} itself
2498would be substituted as an argument, and the inner use of @code{f} would
2499appear during the main scan as an indirect self-reference and would not
2500be expanded.
2501
2502@item
2503Macros that call other macros that stringify or concatenate.
2504
2505If an argument is stringified or concatenated, the prescan does not
2506occur.  If you @emph{want} to expand a macro, then stringify or
2507concatenate its expansion, you can do that by causing one macro to call
2508another macro that does the stringification or concatenation.  For
2509instance, if you have
2510
2511@example
2512#define AFTERX(x) X_ ## x
2513#define XAFTERX(x) AFTERX(x)
2514#define TABLESIZE 1024
2515#define BUFSIZE TABLESIZE
2516@end example
2517
2518then @code{AFTERX(BUFSIZE)} expands to @code{X_BUFSIZE}, and
2519@code{XAFTERX(BUFSIZE)} expands to @code{X_1024}.  (Not to
2520@code{X_TABLESIZE}.  Prescan always does a complete expansion.)
2521
2522@item
2523Macros used in arguments, whose expansions contain unshielded commas.
2524
2525This can cause a macro expanded on the second scan to be called with the
2526wrong number of arguments.  Here is an example:
2527
2528@example
2529#define foo  a,b
2530#define bar(x) lose(x)
2531#define lose(x) (1 + (x))
2532@end example
2533
2534We would like @code{bar(foo)} to turn into @code{(1 + (foo))}, which
2535would then turn into @code{(1 + (a,b))}.  Instead, @code{bar(foo)}
2536expands into @code{lose(a,b)}, and you get an error because @code{lose}
2537requires a single argument.  In this case, the problem is easily solved
2538by the same parentheses that ought to be used to prevent misnesting of
2539arithmetic operations:
2540
2541@example
2542#define foo (a,b)
2543@exdent or
2544#define bar(x) lose((x))
2545@end example
2546
2547The extra pair of parentheses prevents the comma in @code{foo}'s
2548definition from being interpreted as an argument separator.
2549
2550@end itemize
2551
2552@node Newlines in Arguments
2553@subsection Newlines in Arguments
2554@cindex newlines in macro arguments
2555
2556The invocation of a function-like macro can extend over many logical
2557lines.  However, in the present implementation, the entire expansion
2558comes out on one line.  Thus line numbers emitted by the compiler or
2559debugger refer to the line the invocation started on, which might be
2560different to the line containing the argument causing the problem.
2561
2562Here is an example illustrating this:
2563
2564@example
2565#define ignore_second_arg(a,b,c) a; c
2566
2567ignore_second_arg (foo (),
2568                   ignored (),
2569                   syntax error);
2570@end example
2571
2572@noindent
2573The syntax error triggered by the tokens @code{syntax error} results in
2574an error message citing line three---the line of ignore_second_arg---
2575even though the problematic code comes from line five.
2576
2577We consider this a bug, and intend to fix it in the near future.
2578
2579@node Conditionals
2580@chapter Conditionals
2581@cindex conditionals
2582
2583A @dfn{conditional} is a directive that instructs the preprocessor to
2584select whether or not to include a chunk of code in the final token
2585stream passed to the compiler.  Preprocessor conditionals can test
2586arithmetic expressions, or whether a name is defined as a macro, or both
2587simultaneously using the special @code{defined} operator.
2588
2589A conditional in the C preprocessor resembles in some ways an @code{if}
2590statement in C, but it is important to understand the difference between
2591them.  The condition in an @code{if} statement is tested during the
2592execution of your program.  Its purpose is to allow your program to
2593behave differently from run to run, depending on the data it is
2594operating on.  The condition in a preprocessing conditional directive is
2595tested when your program is compiled.  Its purpose is to allow different
2596code to be included in the program depending on the situation at the
2597time of compilation.
2598
2599However, the distinction is becoming less clear.  Modern compilers often
2600do test @code{if} statements when a program is compiled, if their
2601conditions are known not to vary at run time, and eliminate code which
2602can never be executed.  If you can count on your compiler to do this,
2603you may find that your program is more readable if you use @code{if}
2604statements with constant conditions (perhaps determined by macros).  Of
2605course, you can only use this to exclude code, not type definitions or
2606other preprocessing directives, and you can only do it if the code
2607remains syntactically valid when it is not to be used.
2608
2609GCC version 3 eliminates this kind of never-executed code even when
2610not optimizing.  Older versions did it only when optimizing.
2611
2612@menu
2613* Conditional Uses::
2614* Conditional Syntax::
2615* Deleted Code::
2616@end menu
2617
2618@node Conditional Uses
2619@section Conditional Uses
2620
2621There are three general reasons to use a conditional.
2622
2623@itemize @bullet
2624@item
2625A program may need to use different code depending on the machine or
2626operating system it is to run on.  In some cases the code for one
2627operating system may be erroneous on another operating system; for
2628example, it might refer to data types or constants that do not exist on
2629the other system.  When this happens, it is not enough to avoid
2630executing the invalid code.  Its mere presence will cause the compiler
2631to reject the program.  With a preprocessing conditional, the offending
2632code can be effectively excised from the program when it is not valid.
2633
2634@item
2635You may want to be able to compile the same source file into two
2636different programs.  One version might make frequent time-consuming
2637consistency checks on its intermediate data, or print the values of
2638those data for debugging, and the other not.
2639
2640@item
2641A conditional whose condition is always false is one way to exclude code
2642from the program but keep it as a sort of comment for future reference.
2643@end itemize
2644
2645Simple programs that do not need system-specific logic or complex
2646debugging hooks generally will not need to use preprocessing
2647conditionals.
2648
2649@node Conditional Syntax
2650@section Conditional Syntax
2651
2652@findex #if
2653A conditional in the C preprocessor begins with a @dfn{conditional
2654directive}: @samp{#if}, @samp{#ifdef} or @samp{#ifndef}.
2655
2656@menu
2657* Ifdef::
2658* If::
2659* Defined::
2660* Else::
2661* Elif::
2662@end menu
2663
2664@node Ifdef
2665@subsection Ifdef
2666@findex #ifdef
2667@findex #endif
2668
2669The simplest sort of conditional is
2670
2671@example
2672@group
2673#ifdef @var{MACRO}
2674
2675@var{controlled text}
2676
2677#endif /* @var{MACRO} */
2678@end group
2679@end example
2680
2681@cindex conditional group
2682This block is called a @dfn{conditional group}.  @var{controlled text}
2683will be included in the output of the preprocessor if and only if
2684@var{MACRO} is defined.  We say that the conditional @dfn{succeeds} if
2685@var{MACRO} is defined, @dfn{fails} if it is not.
2686
2687The @var{controlled text} inside of a conditional can include
2688preprocessing directives.  They are executed only if the conditional
2689succeeds.  You can nest conditional groups inside other conditional
2690groups, but they must be completely nested.  In other words,
2691@samp{#endif} always matches the nearest @samp{#ifdef} (or
2692@samp{#ifndef}, or @samp{#if}).  Also, you cannot start a conditional
2693group in one file and end it in another.
2694
2695Even if a conditional fails, the @var{controlled text} inside it is
2696still run through initial transformations and tokenization.  Therefore,
2697it must all be lexically valid C@.  Normally the only way this matters is
2698that all comments and string literals inside a failing conditional group
2699must still be properly ended.
2700
2701The comment following the @samp{#endif} is not required, but it is a
2702good practice if there is a lot of @var{controlled text}, because it
2703helps people match the @samp{#endif} to the corresponding @samp{#ifdef}.
2704Older programs sometimes put @var{MACRO} directly after the
2705@samp{#endif} without enclosing it in a comment.  This is invalid code
2706according to the C standard.  GNU CPP accepts it with a warning.  It
2707never affects which @samp{#ifndef} the @samp{#endif} matches.
2708
2709@findex #ifndef
2710Sometimes you wish to use some code if a macro is @emph{not} defined.
2711You can do this by writing @samp{#ifndef} instead of @samp{#ifdef}.
2712One common use of @samp{#ifndef} is to include code only the first
2713time a header file is included.  @xref{Once-Only Headers}.
2714
2715Macro definitions can vary between compilations for several reasons.
2716Here are some samples.
2717
2718@itemize @bullet
2719@item
2720Some macros are predefined on each kind of machine
2721(@pxref{System-specific Predefined Macros}).  This allows you to provide
2722code specially tuned for a particular machine.
2723
2724@item
2725System header files define more macros, associated with the features
2726they implement.  You can test these macros with conditionals to avoid
2727using a system feature on a machine where it is not implemented.
2728
2729@item
2730Macros can be defined or undefined with the @option{-D} and @option{-U}
2731command line options when you compile the program.  You can arrange to
2732compile the same source file into two different programs by choosing a
2733macro name to specify which program you want, writing conditionals to
2734test whether or how this macro is defined, and then controlling the
2735state of the macro with command line options, perhaps set in the
2736Makefile.  @xref{Invocation}.
2737
2738@item
2739Your program might have a special header file (often called
2740@file{config.h}) that is adjusted when the program is compiled.  It can
2741define or not define macros depending on the features of the system and
2742the desired capabilities of the program.  The adjustment can be
2743automated by a tool such as @command{autoconf}, or done by hand.
2744@end itemize
2745
2746@node If
2747@subsection If
2748
2749The @samp{#if} directive allows you to test the value of an arithmetic
2750expression, rather than the mere existence of one macro.  Its syntax is
2751
2752@example
2753@group
2754#if @var{expression}
2755
2756@var{controlled text}
2757
2758#endif /* @var{expression} */
2759@end group
2760@end example
2761
2762@var{expression} is a C expression of integer type, subject to stringent
2763restrictions.  It may contain
2764
2765@itemize @bullet
2766@item
2767Integer constants.
2768
2769@item
2770Character constants, which are interpreted as they would be in normal
2771code.
2772
2773@item
2774Arithmetic operators for addition, subtraction, multiplication,
2775division, bitwise operations, shifts, comparisons, and logical
2776operations (@code{&&} and @code{||}).  The latter two obey the usual
2777short-circuiting rules of standard C@.
2778
2779@item
2780Macros.  All macros in the expression are expanded before actual
2781computation of the expression's value begins.
2782
2783@item
2784Uses of the @code{defined} operator, which lets you check whether macros
2785are defined in the middle of an @samp{#if}.
2786
2787@item
2788Identifiers that are not macros, which are all considered to be the
2789number zero.  This allows you to write @code{@w{#if MACRO}} instead of
2790@code{@w{#ifdef MACRO}}, if you know that MACRO, when defined, will
2791always have a nonzero value.  Function-like macros used without their
2792function call parentheses are also treated as zero.
2793
2794In some contexts this shortcut is undesirable.  The @option{-Wundef}
2795option causes GCC to warn whenever it encounters an identifier which is
2796not a macro in an @samp{#if}.
2797@end itemize
2798
2799The preprocessor does not know anything about types in the language.
2800Therefore, @code{sizeof} operators are not recognized in @samp{#if}, and
2801neither are @code{enum} constants.  They will be taken as identifiers
2802which are not macros, and replaced by zero.  In the case of
2803@code{sizeof}, this is likely to cause the expression to be invalid.
2804
2805The preprocessor calculates the value of @var{expression}.  It carries
2806out all calculations in the widest integer type known to the compiler;
2807on most machines supported by GCC this is 64 bits.  This is not the same
2808rule as the compiler uses to calculate the value of a constant
2809expression, and may give different results in some cases.  If the value
2810comes out to be nonzero, the @samp{#if} succeeds and the @var{controlled
2811text} is included; otherwise it is skipped.
2812
2813If @var{expression} is not correctly formed, GCC issues an error and
2814treats the conditional as having failed.
2815
2816@node Defined
2817@subsection Defined
2818
2819@cindex @code{defined}
2820The special operator @code{defined} is used in @samp{#if} and
2821@samp{#elif} expressions to test whether a certain name is defined as a
2822macro.  @code{defined @var{name}} and @code{defined (@var{name})} are
2823both expressions whose value is 1 if @var{name} is defined as a macro at
2824the current point in the program, and 0 otherwise.  Thus,  @code{@w{#if
2825defined MACRO}} is precisely equivalent to @code{@w{#ifdef MACRO}}.
2826
2827@code{defined} is useful when you wish to test more than one macro for
2828existence at once.  For example,
2829
2830@example
2831#if defined (__vax__) || defined (__ns16000__)
2832@end example
2833
2834@noindent
2835would succeed if either of the names @code{__vax__} or
2836@code{__ns16000__} is defined as a macro.
2837
2838Conditionals written like this:
2839
2840@example
2841#if defined BUFSIZE && BUFSIZE >= 1024
2842@end example
2843
2844@noindent
2845can generally be simplified to just @code{@w{#if BUFSIZE >= 1024}},
2846since if @code{BUFSIZE} is not defined, it will be interpreted as having
2847the value zero.
2848
2849If the @code{defined} operator appears as a result of a macro expansion,
2850the C standard says the behavior is undefined.  GNU cpp treats it as a
2851genuine @code{defined} operator and evaluates it normally.  It will warn
2852wherever your code uses this feature if you use the command-line option
2853@option{-pedantic}, since other compilers may handle it differently.
2854
2855@node Else
2856@subsection Else
2857
2858@findex #else
2859The @samp{#else} directive can be added to a conditional to provide
2860alternative text to be used if the condition fails.  This is what it
2861looks like:
2862
2863@example
2864@group
2865#if @var{expression}
2866@var{text-if-true}
2867#else /* Not @var{expression} */
2868@var{text-if-false}
2869#endif /* Not @var{expression} */
2870@end group
2871@end example
2872
2873@noindent
2874If @var{expression} is nonzero, the @var{text-if-true} is included and
2875the @var{text-if-false} is skipped.  If @var{expression} is zero, the
2876opposite happens.
2877
2878You can use @samp{#else} with @samp{#ifdef} and @samp{#ifndef}, too.
2879
2880@node Elif
2881@subsection Elif
2882
2883@findex #elif
2884One common case of nested conditionals is used to check for more than two
2885possible alternatives.  For example, you might have
2886
2887@example
2888#if X == 1
2889@dots{}
2890#else /* X != 1 */
2891#if X == 2
2892@dots{}
2893#else /* X != 2 */
2894@dots{}
2895#endif /* X != 2 */
2896#endif /* X != 1 */
2897@end example
2898
2899Another conditional directive, @samp{#elif}, allows this to be
2900abbreviated as follows:
2901
2902@example
2903#if X == 1
2904@dots{}
2905#elif X == 2
2906@dots{}
2907#else /* X != 2 and X != 1*/
2908@dots{}
2909#endif /* X != 2 and X != 1*/
2910@end example
2911
2912@samp{#elif} stands for ``else if''.  Like @samp{#else}, it goes in the
2913middle of a conditional group and subdivides it; it does not require a
2914matching @samp{#endif} of its own.  Like @samp{#if}, the @samp{#elif}
2915directive includes an expression to be tested.  The text following the
2916@samp{#elif} is processed only if the original @samp{#if}-condition
2917failed and the @samp{#elif} condition succeeds.
2918
2919More than one @samp{#elif} can go in the same conditional group.  Then
2920the text after each @samp{#elif} is processed only if the @samp{#elif}
2921condition succeeds after the original @samp{#if} and all previous
2922@samp{#elif} directives within it have failed.
2923
2924@samp{#else} is allowed after any number of @samp{#elif} directives, but
2925@samp{#elif} may not follow @samp{#else}.
2926
2927@node Deleted Code
2928@section Deleted Code
2929@cindex commenting out code
2930
2931If you replace or delete a part of the program but want to keep the old
2932code around for future reference, you often cannot simply comment it
2933out.  Block comments do not nest, so the first comment inside the old
2934code will end the commenting-out.  The probable result is a flood of
2935syntax errors.
2936
2937One way to avoid this problem is to use an always-false conditional
2938instead.  For instance, put @code{#if 0} before the deleted code and
2939@code{#endif} after it.  This works even if the code being turned
2940off contains conditionals, but they must be entire conditionals
2941(balanced @samp{#if} and @samp{#endif}).
2942
2943Some people use @code{#ifdef notdef} instead.  This is risky, because
2944@code{notdef} might be accidentally defined as a macro, and then the
2945conditional would succeed.  @code{#if 0} can be counted on to fail.
2946
2947Do not use @code{#if 0} for comments which are not C code.  Use a real
2948comment, instead.  The interior of @code{#if 0} must consist of complete
2949tokens; in particular, single-quote characters must balance.  Comments
2950often contain unbalanced single-quote characters (known in English as
2951apostrophes).  These confuse @code{#if 0}.  They don't confuse
2952@samp{/*}.
2953
2954@node Diagnostics
2955@chapter Diagnostics
2956@cindex diagnostic
2957@cindex reporting errors
2958@cindex reporting warnings
2959
2960@findex #error
2961The directive @samp{#error} causes the preprocessor to report a fatal
2962error.  The tokens forming the rest of the line following @samp{#error}
2963are used as the error message.
2964
2965You would use @samp{#error} inside of a conditional that detects a
2966combination of parameters which you know the program does not properly
2967support.  For example, if you know that the program will not run
2968properly on a VAX, you might write
2969
2970@example
2971@group
2972#ifdef __vax__
2973#error "Won't work on VAXen.  See comments at get_last_object."
2974#endif
2975@end group
2976@end example
2977
2978If you have several configuration parameters that must be set up by
2979the installation in a consistent way, you can use conditionals to detect
2980an inconsistency and report it with @samp{#error}.  For example,
2981
2982@example
2983#if !defined(UNALIGNED_INT_ASM_OP) && defined(DWARF2_DEBUGGING_INFO)
2984#error "DWARF2_DEBUGGING_INFO requires UNALIGNED_INT_ASM_OP."
2985#endif
2986@end example
2987
2988@findex #warning
2989The directive @samp{#warning} is like @samp{#error}, but causes the
2990preprocessor to issue a warning and continue preprocessing.  The tokens
2991following @samp{#warning} are used as the warning message.
2992
2993You might use @samp{#warning} in obsolete header files, with a message
2994directing the user to the header file which should be used instead.
2995
2996Neither @samp{#error} nor @samp{#warning} macro-expands its argument.
2997Internal whitespace sequences are each replaced with a single space.
2998The line must consist of complete tokens.  It is wisest to make the
2999argument of these directives be a single string constant; this avoids
3000problems with apostrophes and the like.
3001
3002@node Line Control
3003@chapter Line Control
3004@cindex line control
3005
3006The C preprocessor informs the C compiler of the location in your source
3007code where each token came from.  Presently, this is just the file name
3008and line number.  All the tokens resulting from macro expansion are
3009reported as having appeared on the line of the source file where the
3010outermost macro was used.  We intend to be more accurate in the future.
3011
3012If you write a program which generates source code, such as the
3013@command{bison} parser generator, you may want to adjust the preprocessor's
3014notion of the current file name and line number by hand.  Parts of the
3015output from @command{bison} are generated from scratch, other parts come
3016from a standard parser file.  The rest are copied verbatim from
3017@command{bison}'s input.  You would like compiler error messages and
3018symbolic debuggers to be able to refer to @code{bison}'s input file.
3019
3020@findex #line
3021@command{bison} or any such program can arrange this by writing
3022@samp{#line} directives into the output file.  @samp{#line} is a
3023directive that specifies the original line number and source file name
3024for subsequent input in the current preprocessor input file.
3025@samp{#line} has three variants:
3026
3027@table @code
3028@item #line @var{linenum}
3029@var{linenum} is a non-negative decimal integer constant.  It specifies
3030the line number which should be reported for the following line of
3031input.  Subsequent lines are counted from @var{linenum}.
3032
3033@item #line @var{linenum} @var{filename}
3034@var{linenum} is the same as for the first form, and has the same
3035effect.  In addition, @var{filename} is a string constant.  The
3036following line and all subsequent lines are reported to come from the
3037file it specifies, until something else happens to change that.
3038
3039@item #line @var{anything else}
3040@var{anything else} is checked for macro calls, which are expanded.
3041The result should match one of the above two forms.
3042@end table
3043
3044@samp{#line} directives alter the results of the @code{__FILE__} and
3045@code{__LINE__} predefined macros from that point on.  @xref{Standard
3046Predefined Macros}.  They do not have any effect on @samp{#include}'s
3047idea of the directory containing the current file.
3048
3049@node Pragmas
3050@chapter Pragmas
3051
3052The @samp{#pragma} directive is the method specified by the C standard
3053for providing additional information to the compiler, beyond what is
3054conveyed in the language itself.  Three forms of this directive
3055(commonly known as @dfn{pragmas}) are specified by the 1999 C standard.
3056A C compiler is free to attach any meaning it likes to other pragmas.
3057
3058GCC has historically preferred to use extensions to the syntax of the
3059language, such as @code{__attribute__}, for this purpose.  However, GCC
3060does define a few pragmas of its own.  These mostly have effects on the
3061entire translation unit or source file.
3062
3063In GCC version 3, all GNU-defined, supported pragmas have been given a
3064@code{GCC} prefix.  This is in line with the @code{STDC} prefix on all
3065pragmas defined by C99.  For backward compatibility, pragmas which were
3066recognized by previous versions are still recognized without the
3067@code{GCC} prefix, but that usage is deprecated.  Some older pragmas are
3068deprecated in their entirety.  They are not recognized with the
3069@code{GCC} prefix.  @xref{Obsolete Features}.
3070
3071@cindex @code{_Pragma}
3072C99 introduces the @code{@w{_Pragma}} operator.  This feature addresses a
3073major problem with @samp{#pragma}: being a directive, it cannot be
3074produced as the result of macro expansion.  @code{@w{_Pragma}} is an
3075operator, much like @code{sizeof} or @code{defined}, and can be embedded
3076in a macro.
3077
3078Its syntax is @code{@w{_Pragma (@var{string-literal})}}, where
3079@var{string-literal} can be either a normal or wide-character string
3080literal.  It is destringized, by replacing all @samp{\\} with a single
3081@samp{\} and all @samp{\"} with a @samp{"}.  The result is then
3082processed as if it had appeared as the right hand side of a
3083@samp{#pragma} directive.  For example,
3084
3085@example
3086_Pragma ("GCC dependency \"parse.y\"")
3087@end example
3088
3089@noindent
3090has the same effect as @code{#pragma GCC dependency "parse.y"}.  The
3091same effect could be achieved using macros, for example
3092
3093@example
3094#define DO_PRAGMA(x) _Pragma (#x)
3095DO_PRAGMA (GCC dependency "parse.y")
3096@end example
3097
3098The standard is unclear on where a @code{_Pragma} operator can appear.
3099The preprocessor does not accept it within a preprocessing conditional
3100directive like @samp{#if}.  To be safe, you are probably best keeping it
3101out of directives other than @samp{#define}, and putting it on a line of
3102its own.
3103
3104This manual documents the pragmas which are meaningful to the
3105preprocessor itself.  Other pragmas are meaningful to the C or C++
3106compilers.  They are documented in the GCC manual.
3107
3108@ftable @code
3109@item #pragma GCC dependency
3110@code{#pragma GCC dependency} allows you to check the relative dates of
3111the current file and another file.  If the other file is more recent than
3112the current file, a warning is issued.  This is useful if the current
3113file is derived from the other file, and should be regenerated.  The
3114other file is searched for using the normal include search path.
3115Optional trailing text can be used to give more information in the
3116warning message.
3117
3118@example
3119#pragma GCC dependency "parse.y"
3120#pragma GCC dependency "/usr/include/time.h" rerun fixincludes
3121@end example
3122
3123@item #pragma GCC poison
3124Sometimes, there is an identifier that you want to remove completely
3125from your program, and make sure that it never creeps back in.  To
3126enforce this, you can @dfn{poison} the identifier with this pragma.
3127@code{#pragma GCC poison} is followed by a list of identifiers to
3128poison.  If any of those identifiers appears anywhere in the source
3129after the directive, it is a hard error.  For example,
3130
3131@example
3132#pragma GCC poison printf sprintf fprintf
3133sprintf(some_string, "hello");
3134@end example
3135
3136@noindent
3137will produce an error.
3138
3139If a poisoned identifier appears as part of the expansion of a macro
3140which was defined before the identifier was poisoned, it will @emph{not}
3141cause an error.  This lets you poison an identifier without worrying
3142about system headers defining macros that use it.
3143
3144For example,
3145
3146@example
3147#define strrchr rindex
3148#pragma GCC poison rindex
3149strrchr(some_string, 'h');
3150@end example
3151
3152@noindent
3153will not produce an error.
3154
3155@item #pragma GCC system_header
3156This pragma takes no arguments.  It causes the rest of the code in the
3157current file to be treated as if it came from a system header.
3158@xref{System Headers}.
3159
3160@end ftable
3161
3162@node Other Directives
3163@chapter Other Directives
3164
3165@findex #ident
3166The @samp{#ident} directive takes one argument, a string constant.  On
3167some systems, that string constant is copied into a special segment of
3168the object file.  On other systems, the directive is ignored.
3169
3170This directive is not part of the C standard, but it is not an official
3171GNU extension either.  We believe it came from System V@.
3172
3173@findex #sccs
3174The @samp{#sccs} directive is recognized on some systems, because it
3175appears in their header files.  It is a very old, obscure, extension
3176which we did not invent, and we have been unable to find any
3177documentation of what it should do, so GCC simply ignores it.
3178
3179@cindex null directive
3180The @dfn{null directive} consists of a @samp{#} followed by a newline,
3181with only whitespace (including comments) in between.  A null directive
3182is understood as a preprocessing directive but has no effect on the
3183preprocessor output.  The primary significance of the existence of the
3184null directive is that an input line consisting of just a @samp{#} will
3185produce no output, rather than a line of output containing just a
3186@samp{#}.  Supposedly some old C programs contain such lines.
3187
3188@node Preprocessor Output
3189@chapter Preprocessor Output
3190
3191When the C preprocessor is used with the C, C++, or Objective-C
3192compilers, it is integrated into the compiler and communicates a stream
3193of binary tokens directly to the compiler's parser.  However, it can
3194also be used in the more conventional standalone mode, where it produces
3195textual output.
3196@c FIXME: Document the library interface.
3197
3198@cindex output format
3199The output from the C preprocessor looks much like the input, except
3200that all preprocessing directive lines have been replaced with blank
3201lines and all comments with spaces.  Long runs of blank lines are
3202discarded.
3203
3204The ISO standard specifies that it is implementation defined whether a
3205preprocessor preserves whitespace between tokens, or replaces it with
3206e.g.@: a single space.  In GNU CPP, whitespace between tokens is collapsed
3207to become a single space, with the exception that the first token on a
3208non-directive line is preceded with sufficient spaces that it appears in
3209the same column in the preprocessed output that it appeared in the
3210original source file.  This is so the output is easy to read.
3211@xref{Differences from previous versions}.  CPP does not insert any
3212whitespace where there was none in the original source, except where
3213necessary to prevent an accidental token paste.
3214
3215@cindex linemarkers
3216Source file name and line number information is conveyed by lines
3217of the form
3218
3219@example
3220# @var{linenum} @var{filename} @var{flags}
3221@end example
3222
3223@noindent
3224These are called @dfn{linemarkers}.  They are inserted as needed into
3225the output (but never within a string or character constant).  They mean
3226that the following line originated in file @var{filename} at line
3227@var{linenum}.
3228
3229After the file name comes zero or more flags, which are @samp{1},
3230@samp{2}, @samp{3}, or @samp{4}.  If there are multiple flags, spaces
3231separate them.  Here is what the flags mean:
3232
3233@table @samp
3234@item 1
3235This indicates the start of a new file.
3236@item 2
3237This indicates returning to a file (after having included another file).
3238@item 3
3239This indicates that the following text comes from a system header file,
3240so certain warnings should be suppressed.
3241@item 4
3242This indicates that the following text should be treated as being
3243wrapped in an implicit @code{extern "C"} block.
3244@c maybe cross reference NO_IMPLICIT_EXTERN_C
3245@end table
3246
3247As an extension, the preprocessor accepts linemarkers in non-assembler
3248input files.  They are treated like the corresponding @samp{#line}
3249directive, (@pxref{Line Control}), except that trailing flags are
3250permitted, and are interpreted with the meanings described above.  If
3251multiple flags are given, they must be in ascending order.
3252
3253Some directives may be duplicated in the output of the preprocessor.
3254These are @samp{#ident} (always), @samp{#pragma} (only if the
3255preprocessor does not handle the pragma itself), and @samp{#define} and
3256@samp{#undef} (with certain debugging options).  If this happens, the
3257@samp{#} of the directive will always be in the first column, and there
3258will be no space between the @samp{#} and the directive name.  If macro
3259expansion happens to generate tokens which might be mistaken for a
3260duplicated directive, a space will be inserted between the @samp{#} and
3261the directive name.
3262
3263@node Traditional Mode
3264@chapter Traditional Mode
3265
3266Traditional (pre-standard) C preprocessing is rather different from
3267the preprocessing specified by the standard.  When GCC is given the
3268@option{-traditional} option, it attempts to emulate a traditional
3269preprocessor.  We do not guarantee that GCC's behavior under
3270@option{-traditional} matches any pre-standard preprocessor exactly.
3271
3272Traditional mode exists only for backward compatibility.  We have no
3273plans to augment it in any way nor will we change it except to fix
3274catastrophic bugs.  You should be aware that modern C libraries often
3275have header files which are incompatible with traditional mode.
3276
3277This is a list of the differences.  It may not be complete, and may not
3278correspond exactly to the behavior of either GCC or a true traditional
3279preprocessor.
3280
3281@itemize @bullet
3282@item
3283Traditional macro expansion pays no attention to single-quote or
3284double-quote characters; macro argument symbols are replaced by the
3285argument values even when they appear within apparent string or
3286character constants.
3287
3288@item
3289Traditionally, it is permissible for a macro expansion to end in the
3290middle of a string or character constant.  The constant continues into
3291the text surrounding the macro call.
3292
3293@item
3294However, the end of the line terminates a string or character constant,
3295with no error.  (This is a kluge.  Traditional mode is commonly used to
3296preprocess things which are not C, and have a different comment syntax.
3297Single apostrophes often appear in comments.  This kluge prevents the
3298traditional preprocessor from issuing errors on such comments.)
3299
3300@item
3301Preprocessing directives are recognized in traditional C only when their
3302leading @samp{#} appears in the first column.  There can be no
3303whitespace between the beginning of the line and the @samp{#}.
3304
3305@item
3306In traditional C, a comment is equivalent to no text at all.  (In ISO
3307C, a comment counts as whitespace.)  It can be used sort of the same way
3308that @samp{##} is used in ISO C, to paste macro arguments together.
3309
3310@item
3311Traditional C does not have the concept of a preprocessing number.
3312
3313@item
3314A macro is not suppressed within its own definition, in traditional C@.
3315Thus, any macro that is used recursively inevitably causes an error.
3316
3317@item
3318The @samp{#} and @samp{##} operators are not available in traditional
3319C@.
3320
3321@item
3322In traditional C, the text at the end of a macro expansion can run
3323together with the text after the macro call, to produce a single token.
3324This is impossible in ISO C@.
3325
3326@item
3327None of the GNU extensions to the preprocessor are available in
3328traditional mode, with the exception of a partial implementation of
3329assertions, and those may be removed in the future.
3330
3331@item
3332A true traditional C preprocessor does not recognize @samp{#elif},
3333@samp{#error}, or @samp{#pragma}.  GCC supports @samp{#elif} and
3334@samp{#error} even in traditional mode, but not @samp{#pragma}.
3335
3336@item
3337Traditional mode is text-based, not token-based, and comments are
3338stripped after macro expansion.  Therefore, @samp{/**/} can be used to
3339paste tokens together provided that there is no whitespace between it
3340and the tokens to be pasted.
3341
3342@item
3343Traditional mode preserves the amount and form of whitespace provided by
3344the user.  Hard tabs remain hard tabs.  This can be useful, e.g.@: if you
3345are preprocessing a Makefile (which we do not encourage).
3346@end itemize
3347
3348You can request warnings about features that did not exist, or worked
3349differently, in traditional C with the @option{-Wtraditional} option.
3350This works only if you do @emph{not} specify @option{-traditional}.  GCC
3351does not warn about features of ISO C which you must use when you are
3352using a conforming compiler, such as the @samp{#} and @samp{##}
3353operators.
3354
3355Presently @option{-Wtraditional} warns about:
3356
3357@itemize @bullet
3358@item
3359Macro parameters that appear within string literals in the macro body.
3360In traditional C macro replacement takes place within string literals,
3361but does not in ISO C@.
3362
3363@item
3364In traditional C, some preprocessor directives did not exist.
3365Traditional preprocessors would only consider a line to be a directive
3366if the @samp{#} appeared in column 1 on the line.  Therefore
3367@option{-Wtraditional} warns about directives that traditional C
3368understands but would ignore because the @samp{#} does not appear as the
3369first character on the line.  It also suggests you hide directives like
3370@samp{#pragma} not understood by traditional C by indenting them.  Some
3371traditional implementations would not recognize @samp{#elif}, so it
3372suggests avoiding it altogether.
3373
3374@item
3375A function-like macro that appears without an argument list.  In
3376traditional C this was an error.  In ISO C it merely means that the
3377macro is not expanded.
3378
3379@item
3380The unary plus operator.  This did not exist in traditional C@.
3381
3382@item
3383The @samp{U} and @samp{LL} integer constant suffixes, which were not
3384available in traditional C@.  (Traditional C does support the @samp{L}
3385suffix for simple long integer constants.)  You are not warned about
3386uses of these suffixes in macros defined in system headers.  For
3387instance, @code{UINT_MAX} may well be defined as @code{4294967295U}, but
3388you will not be warned if you use @code{UINT_MAX}.
3389
3390You can usually avoid the warning, and the related warning about
3391constants which are so large that they are unsigned, by writing the
3392integer constant in question in hexadecimal, with no U suffix.  Take
3393care, though, because this gives the wrong result in exotic cases.
3394@end itemize
3395
3396@node Implementation Details
3397@chapter Implementation Details
3398
3399Here we document details of how the preprocessor's implementation
3400affects its user-visible behavior.  You should try to avoid undue
3401reliance on behavior described here, as it is possible that it will
3402change subtly in future implementations.
3403
3404Also documented here are obsolete features and changes from previous
3405versions of GNU CPP@.
3406
3407@menu
3408* Implementation-defined behavior::
3409* Implementation limits::
3410* Obsolete Features::
3411* Differences from previous versions::
3412@end menu
3413
3414@node Implementation-defined behavior
3415@section Implementation-defined behavior
3416@cindex implementation-defined behavior
3417
3418This is how GNU CPP behaves in all the cases which the C standard
3419describes as @dfn{implementation-defined}.  This term means that the
3420implementation is free to do what it likes, but must document its choice
3421and stick to it.
3422@c FIXME: Check the C++ standard for more implementation-defined stuff.
3423
3424@itemize @bullet
3425@need 1000
3426@item The mapping of physical source file multi-byte characters to the
3427execution character set.
3428
3429Currently, GNU cpp only supports character sets that are strict supersets
3430of ASCII, and performs no translation of characters.
3431
3432@item Non-empty sequences of whitespace characters.
3433
3434In textual output, each whitespace sequence is collapsed to a single
3435space.  For aesthetic reasons, the first token on each non-directive
3436line of output is preceded with sufficient spaces that it appears in the
3437same column as it did in the original source file.
3438
3439@item The numeric value of character constants in preprocessor expressions.
3440
3441The preprocessor and compiler interpret character constants in the same
3442way; escape sequences such as @samp{\a} are given the values they would
3443have on the target machine.
3444
3445Multi-character character constants are interpreted a character at a
3446time, shifting the previous result left by the number of bits per
3447character on the host, and adding the new character.  For example, 'ab'
3448on an 8-bit host would be interpreted as @w{'a' * 256 + 'b'}.  If there
3449are more characters in the constant than can fit in the widest native
3450integer type on the host, usually a @code{long}, the excess characters
3451are ignored and a diagnostic is given.
3452
3453@item Source file inclusion.
3454
3455For a discussion on how the preprocessor locates header files,
3456@ref{Include Operation}.
3457
3458@item Interpretation of the filename resulting from a macro-expanded
3459@samp{#include} directive.
3460
3461@xref{Computed Includes}.
3462
3463@item Treatment of a @samp{#pragma} directive that after macro-expansion
3464results in a standard pragma.
3465
3466No macro expansion occurs on any @samp{#pragma} directive line, so the
3467question does not arise.
3468
3469Note that GCC does not yet implement any of the standard
3470pragmas.
3471
3472@end itemize
3473
3474@node Implementation limits
3475@section Implementation limits
3476@cindex implementation limits
3477
3478GNU CPP has a small number of internal limits.  This section lists the
3479limits which the C standard requires to be no lower than some minimum,
3480and all the others we are aware of.  We intend there to be as few limits
3481as possible.  If you encounter an undocumented or inconvenient limit,
3482please report that to us as a bug.  (See the section on reporting bugs in
3483the GCC manual.)
3484
3485Where we say something is limited @dfn{only by available memory}, that
3486means that internal data structures impose no intrinsic limit, and space
3487is allocated with @code{malloc} or equivalent.  The actual limit will
3488therefore depend on many things, such as the size of other things
3489allocated by the compiler at the same time, the amount of memory
3490consumed by other processes on the same computer, etc.
3491
3492@itemize @bullet
3493
3494@item Nesting levels of @samp{#include} files.
3495
3496We impose an arbitrary limit of 200 levels, to avoid runaway recursion.
3497The standard requires at least 15 levels.
3498
3499@item Nesting levels of conditional inclusion.
3500
3501The C standard mandates this be at least 63.  GNU CPP is limited only by
3502available memory.
3503
3504@item Levels of parenthesised expressions within a full expression.
3505
3506The C standard requires this to be at least 63.  In preprocessor
3507conditional expressions, it is limited only by available memory.
3508
3509@item Significant initial characters in an identifier or macro name.
3510
3511The preprocessor treats all characters as significant.  The C standard
3512requires only that the first 63 be significant.
3513
3514@item Number of macros simultaneously defined in a single translation unit.
3515
3516The standard requires at least 4095 be possible.  GNU CPP is limited only
3517by available memory.
3518
3519@item Number of parameters in a macro definition and arguments in a macro call.
3520
3521We allow @code{USHRT_MAX}, which is no smaller than 65,535.  The minimum
3522required by the standard is 127.
3523
3524@item Number of characters on a logical source line.
3525
3526The C standard requires a minimum of 4096 be permitted.  GNU CPP places
3527no limits on this, but you may get incorrect column numbers reported in
3528diagnostics for lines longer than 65,535 characters.
3529
3530@item Maximum size of a source file.
3531
3532The standard does not specify any lower limit on the maximum size of a
3533source file.  GNU cpp maps files into memory, so it is limited by the
3534available address space.  This is generally at least two gigabytes.
3535Depending on the operating system, the size of physical memory may or
3536may not be a limitation.
3537
3538@end itemize
3539
3540@node Obsolete Features
3541@section Obsolete Features
3542
3543GNU CPP has a number of features which are present mainly for
3544compatibility with older programs.  We discourage their use in new code.
3545In some cases, we plan to remove the feature in a future version of GCC@.
3546
3547@menu
3548* Assertions::
3549* Obsolete once-only headers::
3550* Miscellaneous obsolete features::
3551@end menu
3552
3553@node Assertions
3554@subsection Assertions
3555@cindex assertions
3556
3557@dfn{Assertions} are a deprecated alternative to macros in writing
3558conditionals to test what sort of computer or system the compiled
3559program will run on.  Assertions are usually predefined, but you can
3560define them with preprocessing directives or command-line options.
3561
3562Assertions were intended to provide a more systematic way to describe
3563the compiler's target system.  However, in practice they are just as
3564unpredictable as the system-specific predefined macros.  In addition, they
3565are not part of any standard, and only a few compilers support them.
3566Therefore, the use of assertions is @strong{less} portable than the use
3567of system-specific predefined macros.  We recommend you do not use them at
3568all.
3569
3570@cindex predicates
3571An assertion looks like this:
3572
3573@example
3574#@var{predicate} (@var{answer})
3575@end example
3576
3577@noindent
3578@var{predicate} must be a single identifier.  @var{answer} can be any
3579sequence of tokens; all characters are significant except for leading
3580and trailing whitespace, and differences in internal whitespace
3581sequences are ignored.  (This is similar to the rules governing macro
3582redefinition.)  Thus, @code{(x + y)} is different from @code{(x+y)} but
3583equivalent to @code{@w{( x + y )}}.  Parentheses do not nest inside an
3584answer.
3585
3586@cindex testing predicates
3587To test an assertion, you write it in an @samp{#if}.  For example, this
3588conditional succeeds if either @code{vax} or @code{ns16000} has been
3589asserted as an answer for @code{machine}.
3590
3591@example
3592#if #machine (vax) || #machine (ns16000)
3593@end example
3594
3595@noindent
3596You can test whether @emph{any} answer is asserted for a predicate by
3597omitting the answer in the conditional:
3598
3599@example
3600#if #machine
3601@end example
3602
3603@findex #assert
3604Assertions are made with the @samp{#assert} directive.  Its sole
3605argument is the assertion to make, without the leading @samp{#} that
3606identifies assertions in conditionals.
3607
3608@example
3609#assert @var{predicate} (@var{answer})
3610@end example
3611
3612@noindent
3613You may make several assertions with the same predicate and different
3614answers.  Subsequent assertions do not override previous ones for the
3615same predicate.  All the answers for any given predicate are
3616simultaneously true.
3617
3618@cindex assertions, cancelling
3619@findex #unassert
3620Assertions can be cancelled with the @samp{#unassert} directive.  It
3621has the same syntax as @samp{#assert}.  In that form it cancels only the
3622answer which was specified on the @samp{#unassert} line; other answers
3623for that predicate remain true.  You can cancel an entire predicate by
3624leaving out the answer:
3625
3626@example
3627#unassert @var{predicate}
3628@end example
3629
3630@noindent
3631In either form, if no such assertion has been made, @samp{#unassert} has
3632no effect.
3633
3634You can also make or cancel assertions using command line options.
3635@xref{Invocation}.
3636
3637@node Obsolete once-only headers
3638@subsection Obsolete once-only headers
3639
3640GNU CPP supports two more ways of indicating that a header file should be
3641read only once.  Neither one is as portable as a wrapper @samp{#ifndef},
3642and we recommend you do not use them in new programs.
3643
3644@findex #import
3645In the Objective-C language, there is a variant of @samp{#include}
3646called @samp{#import} which includes a file, but does so at most once.
3647If you use @samp{#import} instead of @samp{#include}, then you don't
3648need the conditionals inside the header file to prevent multiple
3649inclusion of the contents.  GCC permits the use of @samp{#import} in C
3650and C++ as well as Objective-C@.  However, it is not in standard C or C++
3651and should therefore not be used by portable programs.
3652
3653@samp{#import} is not a well designed feature.  It requires the users of
3654a header file to know that it should only be included once.  It is much
3655better for the header file's implementor to write the file so that users
3656don't need to know this.  Using a wrapper @samp{#ifndef} accomplishes
3657this goal.
3658
3659In the present implementation, a single use of @samp{#import} will
3660prevent the file from ever being read again, by either @samp{#import} or
3661@samp{#include}.  You should not rely on this; do not use both
3662@samp{#import} and @samp{#include} to refer to the same header file.
3663
3664Another way to prevent a header file from being included more than once
3665is with the @samp{#pragma once} directive.  If @samp{#pragma once} is
3666seen when scanning a header file, that file will never be read again, no
3667matter what.
3668
3669@samp{#pragma once} does not have the problems that @samp{#import} does,
3670but it is not recognized by all preprocessors, so you cannot rely on it
3671in a portable program.
3672
3673@node Miscellaneous obsolete features
3674@subsection Miscellaneous obsolete features
3675
3676Here are a few more obsolete features.
3677
3678@itemize @bullet
3679@cindex invalid token paste
3680@item Attempting to paste two tokens which together do not form a valid
3681preprocessing token.
3682
3683The preprocessor currently warns about this and outputs the two tokens
3684adjacently, which is probably the behavior the programmer intends.  It
3685may not work in future, though.
3686
3687Most of the time, when you get this warning, you will find that @samp{##}
3688is being used superstitiously, to guard against whitespace appearing
3689between two tokens.  It is almost always safe to delete the @samp{##}.
3690
3691@cindex pragma poison
3692@item @code{#pragma poison}
3693
3694This is the same as @code{#pragma GCC poison}.  The version without the
3695@code{GCC} prefix is deprecated.  @xref{Pragmas}.
3696
3697@cindex multi-line string constants
3698@item Multi-line string constants
3699
3700GCC currently allows a string constant to extend across multiple logical
3701lines of the source file.  This extension is deprecated and will be
3702removed in a future version of GCC@.  Such string constants are already
3703rejected in all directives apart from @samp{#define}.
3704
3705Instead, make use of ISO C concatenation of adjacent string literals, or
3706use @samp{\n} followed by a backslash-newline.
3707
3708@end itemize
3709
3710@node Differences from previous versions
3711@section Differences from previous versions
3712@cindex differences from previous versions
3713
3714This section details behavior which has changed from previous versions
3715of GNU CPP@.  We do not plan to change it again in the near future, but
3716we do not promise not to, either.
3717
3718The ``previous versions'' discussed here are 2.95 and before.  The
3719behavior of GCC 3.0 is mostly the same as the behavior of the widely
3720used 2.96 and 2.97 development snapshots.  Where there are differences,
3721they generally represent bugs in the snapshots.
3722
3723@itemize @bullet
3724
3725@item Order of evaluation of @samp{#} and @samp{##} operators
3726
3727The standard does not specify the order of evaluation of a chain of
3728@samp{##} operators, nor whether @samp{#} is evaluated before, after, or
3729at the same time as @samp{##}.  You should therefore not write any code
3730which depends on any specific ordering.  It is possible to guarantee an
3731ordering, if you need one, by suitable use of nested macros.
3732
3733An example of where this might matter is pasting the arguments @samp{1},
3734@samp{e} and @samp{-2}.  This would be fine for left-to-right pasting,
3735but right-to-left pasting would produce an invalid token @samp{e-2}.
3736
3737GCC 3.0 evaluates @samp{#} and @samp{##} at the same time and strictly
3738left to right.  Older versions evaluated all @samp{#} operators first,
3739then all @samp{##} operators, in an unreliable order.
3740
3741@item The form of whitespace betwen tokens in preprocessor output
3742
3743@xref{Preprocessor Output}, for the current textual format.  This is
3744also the format used by stringification.  Normally, the preprocessor
3745communicates tokens directly to the compiler's parser, and whitespace
3746does not come up at all.
3747
3748Older versions of GCC preserved all whitespace provided by the user and
3749inserted lots more whitespace of their own, because they could not
3750accurately predict when extra spaces were needed to prevent accidental
3751token pasting.
3752
3753@item Optional argument when invoking rest argument macros
3754
3755As an extension, GCC permits you to omit the variable arguments entirely
3756when you use a variable argument macro.  This is forbidden by the 1999 C
3757standard, and will provoke a pedantic warning with GCC 3.0.  Previous
3758versions accepted it silently.
3759
3760@item @samp{##} swallowing preceding text in rest argument macros
3761
3762Formerly, in a macro expansion, if @samp{##} appeared before a variable
3763arguments parameter, and the set of tokens specified for that argument
3764in the macro invocation was empty, previous versions of GNU CPP would
3765back up and remove the preceding sequence of non-whitespace characters
3766(@strong{not} the preceding token).  This extension is in direct
3767conflict with the 1999 C standard and has been drastically pared back.
3768
3769In the current version of the preprocessor, if @samp{##} appears between
3770a comma and a variable arguments parameter, and the variable argument is
3771omitted entirely, the comma will be removed from the expansion.  If the
3772variable argument is empty, or the token before @samp{##} is not a
3773comma, then @samp{##} behaves as a normal token paste.
3774
3775@item Traditional mode and GNU extensions
3776
3777Traditional mode used to be implemented in the same program as normal
3778preprocessing.  Therefore, all the GNU extensions to the preprocessor
3779were still available in traditional mode.  It is now a separate program
3780and does not implement any of the GNU extensions, except for a partial
3781implementation of assertions.  Even those may be removed in a future
3782release.
3783@end itemize
3784
3785@node Invocation
3786@chapter Invocation
3787@cindex invocation
3788@cindex command line
3789
3790Most often when you use the C preprocessor you will not have to invoke it
3791explicitly: the C compiler will do so automatically.  However, the
3792preprocessor is sometimes useful on its own.  All the options listed
3793here are also acceptable to the C compiler and have the same meaning,
3794except that the C compiler has different rules for specifying the output
3795file.
3796
3797@strong{Note:} Whether you use the preprocessor by way of @command{gcc}
3798or @command{cpp}, the @dfn{compiler driver} is run first.  This
3799program's purpose is to translate your command into invocations of the
3800programs that do the actual work.  Their command line interfaces are
3801similar but not identical to the documented interface, and may change
3802without notice.
3803
3804@ignore
3805@c man begin SYNOPSIS
3806cpp [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
3807    [@option{-I}@var{dir}@dots{}] [@option{-W}@var{warn}@dots{}]
3808    [@option{-M}|@option{-MM}] [@option{-MG}] [@option{-MF} @var{filename}]
3809    [@option{-MP}] [@option{-MQ} @var{target}@dots{}] [@option{-MT} @var{target}@dots{}]
3810    [@option{-x} @var{language}] [@option{-std=}@var{standard}]
3811    @var{infile} @var{outfile}
3812
3813Only the most useful options are listed here; see below for the remainder.
3814@c man end
3815@c man begin SEEALSO
3816gpl(7), gfdl(7), fsf-funding(7),
3817gcc(1), as(1), ld(1), and the Info entries for @file{cpp}, @file{gcc}, and
3818@file{binutils}.
3819@c man end
3820@end ignore
3821
3822@c man begin OPTIONS
3823The C preprocessor expects two file names as arguments, @var{infile} and
3824@var{outfile}.  The preprocessor reads @var{infile} together with any
3825other files it specifies with @samp{#include}.  All the output generated
3826by the combined input files is written in @var{outfile}.
3827
3828Either @var{infile} or @var{outfile} may be @option{-}, which as
3829@var{infile} means to read from standard input and as @var{outfile}
3830means to write to standard output.  Also, if either file is omitted, it
3831means the same as if @option{-} had been specified for that file.
3832
3833Unless otherwise noted, or the option ends in @samp{=}, all options
3834which take an argument may have that argument appear either immediately
3835after the option, or with a space between option and argument:
3836@option{-Ifoo} and @option{-I foo} have the same effect.
3837
3838@cindex grouping options
3839@cindex options, grouping
3840Many options have multi-letter names; therefore multiple single-letter
3841options may @emph{not} be grouped: @option{-dM} is very different from
3842@w{@samp{-d -M}}.
3843
3844@cindex options
3845@table @gcctabopt
3846@item -D @var{name}
3847Predefine @var{name} as a macro, with definition @code{1}.
3848
3849@item -D @var{name}=@var{definition}
3850Predefine @var{name} as a macro, with definition @var{definition}.
3851There are no restrictions on the contents of @var{definition}, but if
3852you are invoking the preprocessor from a shell or shell-like program you
3853may need to use the shell's quoting syntax to protect characters such as
3854spaces that have a meaning in the shell syntax.  If you use more than
3855one @option{-D} for the same @var{name}, the rightmost definition takes
3856effect.
3857
3858If you wish to define a function-like macro on the command line, write
3859its argument list with surrounding parentheses before the equals sign
3860(if any).  Parentheses are meaningful to most shells, so you will need
3861to quote the option.  With @command{sh} and @command{csh},
3862@option{-D'@var{name}(@var{args@dots{}})=@var{definition}'} works.
3863
3864@item -U @var{name}
3865Cancel any previous definition of @var{name}, either built in or
3866provided with a @option{-D} option.
3867
3868All @option{-imacros @var{file}} and @option{-include @var{file}} options
3869are processed after all @option{-D} and @option{-U} options.
3870
3871@item -undef
3872Do not predefine any system-specific macros.  The common predefined
3873macros remain defined.
3874
3875@item -I @var{dir}
3876Add the directory @var{dir} to the list of directories to be searched
3877for header files.  @xref{Search Path}.  Directories named by @option{-I}
3878are searched before the standard system include directories.
3879
3880It is dangerous to specify a standard system include directory in an
3881@option{-I} option.  This defeats the special treatment of system
3882headers (@pxref{System Headers}).  It can also defeat the repairs to
3883buggy system headers which GCC makes when it is installed.
3884
3885@item -o @var{file}
3886Write output to @var{file}.  This is the same as specifying @var{file}
3887as the second non-option argument to @command{cpp}.  @command{gcc} has a
3888different interpretation of a second non-option argument, so you must
3889use @option{-o} to specify the output file.
3890
3891@item -Wall
3892Turns on all optional warnings which are desirable for normal code.  At
3893present this is @option{-Wcomment} and @option{-Wtrigraphs}.  Note that
3894many of the preprocessor's warnings are on by default and have no
3895options to control them.
3896
3897@item -Wcomment
3898@itemx -Wcomments
3899Warn whenever a comment-start sequence @samp{/*} appears in a @samp{/*}
3900comment, or whenever a backslash-newline appears in a @samp{//} comment.
3901(Both forms have the same effect.)
3902
3903@item -Wtrigraphs
3904Warn if any trigraphs are encountered.  This option used to take effect
3905only if @option{-trigraphs} was also specified, but now works
3906independently.  Warnings are not given for trigraphs within comments, as
3907they do not affect the meaning of the program.
3908
3909@item -Wtraditional
3910Warn about certain constructs that behave differently in traditional and
3911ISO C@.  Also warn about ISO C constructs that have no traditional C
3912equivalent, and problematic constructs which should be avoided.
3913@xref{Traditional Mode}.
3914
3915@item -Wimport
3916Warn the first time @samp{#import} is used.
3917
3918@item -Wundef
3919Warn whenever an identifier which is not a macro is encountered in an
3920@samp{#if} directive, outside of @samp{defined}.  Such identifiers are
3921replaced with zero.
3922
3923@item -Werror
3924Make all warnings into hard errors.  Source code which triggers warnings
3925will be rejected.
3926
3927@item -Wsystem-headers
3928Issue warnings for code in system headers.  These are normally unhelpful
3929in finding bugs in your own code, therefore suppressed.  If you are
3930responsible for the system library, you may want to see them.
3931
3932@item -w
3933Suppress all warnings, including those which GNU CPP issues by default.
3934
3935@item -pedantic
3936Issue all the mandatory diagnostics listed in the C standard.  Some of
3937them are left out by default, since they trigger frequently on harmless
3938code.
3939
3940@item -pedantic-errors
3941Issue all the mandatory diagnostics, and make all mandatory diagnostics
3942into errors.  This includes mandatory diagnostics that GCC issues
3943without @samp{-pedantic} but treats as warnings.
3944
3945@item -M
3946Instead of outputting the result of preprocessing, output a rule
3947suitable for @command{make} describing the dependencies of the main
3948source file.  The preprocessor outputs one @command{make} rule containing
3949the object file name for that source file, a colon, and the names of all
3950the included files, including those coming from @option{-include} or
3951@option{-imacros} command line options.
3952
3953Unless specified explicitly (with @option{-MT} or @option{-MQ}), the
3954object file name consists of the basename of the source file with any
3955suffix replaced with object file suffix.  If there are many included
3956files then the rule is split into several lines using @samp{\}-newline.
3957The rule has no commands.
3958
3959@item -MM
3960Like @option{-M}, but mention only the files included with @code{@w{#include
3961"@var{file}"}} or with @option{-include} or @option{-imacros} command line
3962options.  System header files included with @code{@w{#include <@var{file}>}}
3963are omitted.
3964
3965@item -MF @var{file}
3966When used with @option{-M} or @option{-MM}, specifies a file to write the
3967dependencies to.  This allows the preprocessor to write the preprocessed
3968file to stdout normally.  If no @option{-MF} switch is given, CPP sends
3969the rules to stdout and suppresses normal preprocessed output.
3970
3971@item -MG
3972When used with @option{-M} or @option{-MM}, @option{-MG} says to treat missing
3973header files as generated files and assume they live in the same
3974directory as the source file.  It suppresses preprocessed output, as a
3975missing header file is ordinarily an error.
3976
3977This feature is used in automatic updating of makefiles.
3978
3979@item -MP
3980This option instructs CPP to add a phony target for each dependency
3981other than the main file, causing each to depend on nothing.  These
3982dummy rules work around errors @command{make} gives if you remove header
3983files without updating the @file{Makefile} to match.
3984
3985This is typical output:
3986
3987@example
3988test.o: test.c test.h
3989
3990test.h:
3991@end example
3992
3993@item -MT @var{target}
3994
3995Change the target of the rule emitted by dependency generation.  By
3996default CPP takes the name of the main input file, including any path,
3997deletes any file suffix such as @samp{.c}, and appends the platform's
3998usual object suffix.  The result is the target.
3999
4000An @option{-MT} option will set the target to be exactly the string you
4001specify.  If you want multiple targets, you can specify them as a single
4002argument to @option{-MT}, or use multiple @option{-MT} options.
4003
4004For example, @option{@w{-MT '$(objpfx)foo.o'}} might give
4005
4006@example
4007$(objpfx)foo.o: foo.c
4008@end example
4009
4010@item -MQ @var{target}
4011
4012Same as @option{-MT}, but it quotes any characters which are special to
4013Make.  @option{@w{-MQ '$(objpfx)foo.o'}} gives
4014
4015@example
4016$$(objpfx)foo.o: foo.c
4017@end example
4018
4019The default target is automatically quoted, as if it were given with
4020@option{-MQ}.
4021
4022@item -MD @var{file}
4023@itemx -MMD @var{file}
4024@option{-MD @var{file}} is equivalent to @option{-M -MF @var{file}}, and
4025@option{-MMD @var{file}} is equivalent to @option{-MM -MF @var{file}}.
4026
4027Due to limitations in the compiler driver, you must use these switches
4028when you want to generate a dependency file as a side-effect of normal
4029compilation.
4030
4031@item -x c
4032@itemx -x c++
4033@itemx -x objective-c
4034@itemx -x assembler-with-cpp
4035Specify the source language: C, C++, Objective-C, or assembly.  This has
4036nothing to do with standards conformance or extensions; it merely
4037selects which base syntax to expect.  If you give none of these options,
4038cpp will deduce the language from the extension of the source file:
4039@samp{.c}, @samp{.cc}, @samp{.m}, or @samp{.S}.  Some other common
4040extensions for C++ and assembly are also recognized.  If cpp does not
4041recognize the extension, it will treat the file as C; this is the most
4042generic mode.
4043
4044@strong{Note:} Previous versions of cpp accepted a @option{-lang} option
4045which selected both the language and the standards conformance level.
4046This option has been removed, because it conflicts with the @option{-l}
4047option.
4048
4049@item -std=@var{standard}
4050@itemx -ansi
4051Specify the standard to which the code should conform.  Currently cpp
4052only knows about the standards for C; other language standards will be
4053added in the future.
4054
4055@var{standard}
4056may be one of:
4057@table @code
4058@item iso9899:1990
4059@itemx c89
4060The ISO C standard from 1990.  @samp{c89} is the customary shorthand for
4061this version of the standard.
4062
4063The @option{-ansi} option is equivalent to @option{-std=c89}.
4064
4065@item iso9899:199409
4066The 1990 C standard, as amended in 1994.
4067
4068@item iso9899:1999
4069@itemx c99
4070@itemx iso9899:199x
4071@itemx c9x
4072The revised ISO C standard, published in December 1999.  Before
4073publication, this was known as C9X@.
4074
4075@item gnu89
4076The 1990 C standard plus GNU extensions.  This is the default.
4077
4078@item gnu99
4079@itemx gnu9x
4080The 1999 C standard plus GNU extensions.
4081@end table
4082
4083@item -I-
4084Split the include path.  Any directories specified with @option{-I}
4085options before @option{-I-} are searched only for headers requested with
4086@code{@w{#include "@var{file}"}}; they are not searched for
4087@code{@w{#include <@var{file}>}}.  If additional directories are
4088specified with @option{-I} options after the @option{-I-}, those
4089directories are searched for all @samp{#include} directives.
4090
4091In addition, @option{-I-} inhibits the use of the directory of the current
4092file directory as the first search directory for @code{@w{#include
4093"@var{file}"}}.  @xref{Search Path}.
4094
4095@item -nostdinc
4096Do not search the standard system directories for header files.
4097Only the directories you have specified with @option{-I} options
4098(and the directory of the current file, if appropriate) are searched.
4099
4100@item -nostdinc++
4101Do not search for header files in the C++-specific standard directories,
4102but do still search the other standard directories.  (This option is
4103used when building the C++ library.)
4104
4105@item -include @var{file}
4106
4107Process @var{file} as if @code{#include "file"} appeared as the first
4108line of the primary source file.  However, the first directory searched
4109for @var{file} is the preprocessor's working directory @emph{instead of}
4110the directory containing the main source file.  If not found there, it
4111is searched for in the remainder of the @code{#include "@dots{}"} search
4112chain as normal.
4113
4114If multiple @option{-include} options are given, the files are included
4115in the order they appear on the command line.
4116
4117@item -imacros @var{file}
4118
4119Exactly like @option{-include}, except that any output produced by
4120scanning @var{file} is thrown away.  Macros it defines remain defined.
4121This allows you to acquire all the macros from a header without also
4122processing its declarations.
4123
4124All files specified by @option{-imacros} are processed before all files
4125specified by @option{-include}.
4126
4127@item -idirafter @var{dir}
4128Search @var{dir} for header files, but do it @emph{after} all
4129directories specified with @option{-I} and the standard system directories
4130have been exhausted.  @var{dir} is treated as a system include directory.
4131
4132@item -iprefix @var{prefix}
4133Specify @var{prefix} as the prefix for subsequent @option{-iwithprefix}
4134options.  If the prefix represents a directory, you should include the
4135final @samp{/}.
4136
4137@item -iwithprefix @var{dir}
4138@itemx -iwithprefixbefore @var{dir}
4139
4140Append @var{dir} to the prefix specified previously with
4141@option{-iprefix}, and add the resulting directory to the include search
4142path.  @option{-iwithprefixbefore} puts it in the same place @option{-I}
4143would; @option{-iwithprefix} puts it where @option{-idirafter} would.
4144
4145Use of these options is discouraged.
4146
4147@item -isystem @var{dir}
4148Search @var{dir} for header files, after all directories specified by
4149@option{-I} but before the standard system directories.  Mark it
4150as a system directory, so that it gets the same special treatment as
4151is applied to the standard system directories.  @xref{System Headers}.
4152
4153@item -fpreprocessed
4154Indicate to the preprocessor that the input file has already been
4155preprocessed.  This suppresses things like macro expansion, trigraph
4156conversion, escaped newline splicing, and processing of most directives.
4157The preprocessor still recognizes and removes comments, so that you can
4158pass a file preprocessed with @option{-C} to the compiler without
4159problems.  In this mode the integrated preprocessor is little more than
4160a tokenizer for the front ends.
4161
4162@option{-fpreprocessed} is implicit if the input file has one of the
4163extensions @samp{.i}, @samp{.ii} or @samp{.mi}.  These are the
4164extensions that GCC uses for preprocessed files created by
4165@option{-save-temps}.
4166
4167@item -ftabstop=@var{width}
4168Set the distance between tab stops.  This helps the preprocessor report
4169correct column numbers in warnings or errors, even if tabs appear on the
4170line.  If the value is less than 1 or greater than 100, the option is
4171ignored.  The default is 8.
4172
4173@item -fno-show-column
4174Do not print column numbers in diagnostics.  This may be necessary if
4175diagnostics are being scanned by a program that does not understand the
4176column numbers, such as @command{dejagnu}.
4177
4178@item -A @var{predicate}=@var{answer}
4179Make an assertion with the predicate @var{predicate} and answer
4180@var{answer}.  This form is preferred to the older form @option{-A
4181@var{predicate}(@var{answer})}, which is still supported, because
4182it does not use shell special characters.  @xref{Assertions}.
4183
4184@item -A -@var{predicate}=@var{answer}
4185Cancel an assertion with the predicate @var{predicate} and answer
4186@var{answer}.
4187
4188@item -A-
4189Cancel all predefined assertions and all assertions preceding it on
4190the command line.  Also, undefine all predefined macros and all
4191macros preceding it on the command line.  (This is a historical wart and
4192may change in the future.)
4193
4194@item -dCHARS
4195@var{CHARS} is a sequence of one or more of the following characters,
4196and must not be preceded by a space.  Other characters are interpreted
4197by the compiler proper, or reserved for future versions of GCC, and so
4198are silently ignored.  If you specify characters whose behavior
4199conflicts, the result is undefined.
4200
4201@table @samp
4202@item M
4203Instead of the normal output, generate a list of @samp{#define}
4204directives for all the macros defined during the execution of the
4205preprocessor, including predefined macros.  This gives you a way of
4206finding out what is predefined in your version of the preprocessor.
4207Assuming you have no file @file{foo.h}, the command
4208
4209@example
4210touch foo.h; cpp -dM foo.h
4211@end example
4212
4213@noindent
4214will show all the predefined macros.
4215
4216@item D
4217Like @samp{M} except in two respects: it does @emph{not} include the
4218predefined macros, and it outputs @emph{both} the @samp{#define}
4219directives and the result of preprocessing.  Both kinds of output go to
4220the standard output file.
4221
4222@item N
4223Like @samp{D}, but emit only the macro names, not their expansions.
4224
4225@item I
4226Output @samp{#include} directives in addition to the result of
4227preprocessing.
4228@end table
4229
4230@item -P
4231Inhibit generation of linemarkers in the output from the preprocessor.
4232This might be useful when running the preprocessor on something that is
4233not C code, and will be sent to a program which might be confused by the
4234linemarkers.  @xref{Preprocessor Output}.
4235
4236@item -C
4237Do not discard comments.  All comments are passed through to the output
4238file, except for comments in processed directives, which are deleted
4239along with the directive.
4240
4241You should be prepared for side effects when using @option{-C}; it
4242causes the preprocessor to treat comments as tokens in their own right.
4243For example, comments appearing at the start of what would be a
4244directive line have the effect of turning that line into an ordinary
4245source line, since the first token on the line is no longer a @samp{#}.
4246
4247@item -gcc
4248Define the macros @sc{__gnuc__}, @sc{__gnuc_minor__} and
4249@sc{__gnuc_patchlevel__}.  These are defined automatically when you use
4250@command{gcc -E}; you can turn them off in that case with
4251@option{-no-gcc}.
4252
4253@item -traditional
4254Try to imitate the behavior of old-fashioned C, as opposed to ISO
4255C@.  @xref{Traditional Mode}.
4256
4257@item -trigraphs
4258Process trigraph sequences.  @xref{Initial processing}.
4259
4260@item -remap
4261Enable special code to work around file systems which only permit very
4262short file names, such as MS-DOS@.
4263
4264@item -$
4265Forbid the use of @samp{$} in identifiers.  The C standard allows
4266implementations to define extra characters that can appear in
4267identifiers.  By default GNU CPP permits @samp{$}, a common extension.
4268
4269@item -h
4270@itemx --help
4271@itemx --target-help
4272Print text describing all the command line options instead of
4273preprocessing anything.
4274
4275@item -v
4276Verbose mode.  Print out GNU CPP's version number at the beginning of
4277execution, and report the final form of the include path.
4278
4279@item -H
4280Print the name of each header file used, in addition to other normal
4281activities.  Each name is indented to show how deep in the
4282@samp{#include} stack it is.
4283
4284@item -version
4285@itemx --version
4286Print out GNU CPP's version number.  With one dash, proceed to
4287preprocess as normal.  With two dashes, exit immediately.
4288@end table
4289@c man end
4290
4291@include fdl.texi
4292
4293@page
4294@node Index of Directives
4295@unnumbered Index of Directives
4296@printindex fn
4297
4298@node Concept Index
4299@unnumbered Concept Index
4300@printindex cp
4301
4302@bye
4303