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