OSDN Git Service

* cppfiles.c (_cpp_read_file): Add to dependencies if requested.
[pf3gnuchains/gcc-fork.git] / gcc / cpp.texi
1 \input texinfo
2 @setfilename cpp.info
3 @settitle The C Preprocessor
4
5 @ifinfo
6 @dircategory Programming
7 @direntry
8 * Cpp: (cpp).                  The GNU C preprocessor.
9 @end direntry
10 @end ifinfo
11
12 @c @smallbook
13 @c @cropmarks
14 @c @finalout
15 @setchapternewpage odd
16 @ifinfo
17 This file documents the GNU C Preprocessor.
18
19 Copyright 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
20 1999, 2000, 2001 Free Software Foundation, Inc.
21
22 Permission is granted to make and distribute verbatim copies of
23 this manual provided the copyright notice and this permission notice
24 are preserved on all copies.
25
26 @ignore
27 Permission is granted to process this file through Tex and print the
28 results, provided the printed document carries copying permission
29 notice identical to this one except for the removal of this paragraph
30 (this paragraph not being relevant to the printed manual).
31
32 @end ignore
33 Permission is granted to copy and distribute modified versions of this
34 manual under the conditions for verbatim copying, provided also that
35 the entire resulting derived work is distributed under the terms of a
36 permission notice identical to this one.
37
38 Permission is granted to copy and distribute translations of this manual
39 into another language, under the above conditions for modified versions.
40 @end ifinfo
41
42 @titlepage
43 @c @finalout
44 @title The C Preprocessor
45 @subtitle Last revised January 2001
46 @subtitle for GCC version 2
47 @author Richard M. Stallman
48 @page
49 @vskip 2pc
50 This booklet is eventually intended to form the first chapter of a GNU 
51 C Language manual.
52
53 @vskip 0pt plus 1filll
54 @c man begin COPYRIGHT
55 Copyright @copyright{} 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
56 1997, 1998, 1999, 2000, 2001
57 Free Software Foundation, Inc.
58
59 Permission is granted to make and distribute verbatim copies of
60 this manual provided the copyright notice and this permission notice
61 are preserved on all copies.
62
63 Permission is granted to copy and distribute modified versions of this
64 manual under the conditions for verbatim copying, provided also that
65 the entire resulting derived work is distributed under the terms of a
66 permission notice identical to this one.
67
68 Permission is granted to copy and distribute translations of this manual
69 into another language, under the above conditions for modified versions.
70 @c man end
71 @end titlepage
72 @page
73
74 @node Top, Global Actions,, (DIR)
75 @chapter The C Preprocessor
76 @c man begin DESCRIPTION
77
78 The C preprocessor is a @dfn{macro processor} that is used automatically
79 by the C compiler to transform your program before actual compilation.
80 It is called a macro processor because it allows you to define
81 @dfn{macros}, which are brief abbreviations for longer constructs.
82
83 The C preprocessor is intended only for macro processing of C, C++ and
84 Objective C source files.  For macro processing of other files, you are
85 strongly encouraged to use alternatives like M4, which will likely give
86 you better results and avoid many problems.  For example, normally the C
87 preprocessor does not preserve arbitrary whitespace verbatim, but
88 instead replaces each sequence with a single space.
89
90 For use on C-like source files, the C preprocessor provides four
91 separate facilities that you can use as you see fit:
92
93 @itemize @bullet
94 @item
95 Inclusion of header files.  These are files of declarations that can be
96 substituted into your program.
97
98 @item
99 Macro expansion.  You can define @dfn{macros}, which are abbreviations
100 for arbitrary fragments of C code, and then the C preprocessor will
101 replace the macros with their definitions throughout the program.
102
103 @item
104 Conditional compilation.  Using special preprocessing directives, you
105 can include or exclude parts of the program according to various
106 conditions.
107
108 @item
109 Line control.  If you use a program to combine or rearrange source files
110 into an intermediate file which is then compiled, you can use line
111 control to inform the compiler of where each source line originally came
112 from.
113 @end itemize
114
115 C preprocessors vary in some details.  This manual discusses the GNU C
116 preprocessor, which provides a small superset of the features of ISO
117 Standard C@.
118
119 In its default mode, the GNU C preprocessor does not do a few things
120 required by the standard.  These are features which are rarely, if ever,
121 used, and may cause surprising changes to the meaning of a program which
122 does not expect them.  To get strict ISO Standard C, you should use the
123 @samp{-std=c89} or @samp{-std=c99} options, depending on which version
124 of the standard you want.  To get all the mandatory diagnostics, you
125 must also use @samp{-pedantic}.  @xref{Invocation}.
126
127 @c man end
128
129 @menu
130 * Global Actions::       Actions made uniformly on all input files.
131 * Directives::           General syntax of preprocessing directives.
132 * Header Files::         How and why to use header files.
133 * Macros::               How and why to use macros.
134 * Conditionals::         How and why to use conditionals.
135 * Assertions::           How and why to use assertions.
136 * Line Control::         Use of line control when you combine source files.
137 * Other Directives::     Miscellaneous preprocessing directives.
138 * Output::               Format of output from the C preprocessor.
139 * Implementation::       Implementation limits and behavior.
140 * Unreliable Features::  Undefined behavior and deprecated features.
141 * Invocation::           How to invoke the preprocessor; command options.
142 * Concept Index::        Index of concepts and terms.
143 * Index::                Index of directives, predefined macros and options.
144 @end menu
145
146 @node Global Actions, Directives, Top, Top
147 @section Transformations Made Globally
148 @cindex ASCII NUL handling
149
150 Most C preprocessor features are inactive unless you give specific
151 directives to request their use.  (Preprocessing directives are lines
152 starting with a @samp{#} token, possibly preceded by whitespace;
153 @pxref{Directives}).  However, there are four transformations that the
154 preprocessor always makes on all the input it receives, even in the
155 absence of directives.  These are, in order:
156
157 @enumerate
158 @item
159 Trigraphs, if enabled, are replaced with the character they represent.
160
161 @item
162 Backslash-newline sequences are deleted, no matter where.  This
163 feature allows you to break long lines for cosmetic purposes without
164 changing their meaning.
165
166 Recently, the non-traditional preprocessor has relaxed its treatment of
167 escaped newlines.  Previously, the newline had to immediately follow a
168 backslash.  The current implementation allows whitespace in the form of
169 spaces, horizontal and vertical tabs, and form feeds between the
170 backslash and the subsequent newline.  The preprocessor issues a
171 warning, but treats it as a valid escaped newline and combines the two
172 lines to form a single logical line.  This works within comments and
173 tokens, including multi-line strings, as well as between tokens.
174 Comments are @emph{not} treated as whitespace for the purposes of this
175 relaxation, since they have not yet been replaced with spaces.
176
177 @item
178 All comments are replaced with single spaces.
179
180 @item
181 Predefined macro names are replaced with their expansions
182 (@pxref{Predefined}).
183 @end enumerate
184
185 For end-of-line indicators, any of \n, \r\n, \n\r and \r are recognised,
186 and treated as ending a single line.  As a result, if you mix these in a
187 single file you might get incorrect line numbering, because the
188 preprocessor would interpret the two-character versions as ending just
189 one line.  Previous implementations would only handle UNIX-style \n
190 correctly, so DOS-style \r\n would need to be passed through a filter
191 first.
192
193 The first three transformations are done @emph{before} all other parsing
194 and before preprocessing directives are recognized.  Thus, for example,
195 you can split a line mechanically with backslash-newline anywhere
196 (except within trigraphs since they are replaced first; see below).
197
198 @example
199 /*
200 */ # /*
201 */ defi\
202 ne FO\
203 O 10\
204 20
205 @end example
206
207 @noindent
208 is equivalent into @samp{#define FOO 1020}.
209
210 There is no way to prevent a backslash at the end of a line from being
211 interpreted as a backslash-newline.  For example,
212
213 @example
214 "foo\\
215 bar"
216 @end example
217
218 is equivalent to @code{"foo\bar"}, not to @code{"foo\\bar"}.  To avoid
219 having to worry about this, do not use the GNU extension which permits
220 multi-line strings.  Instead, use string constant concatenation:
221
222 @example
223    "foo\\"
224    "bar"
225 @end example
226
227 Your program will be more portable this way, too.
228
229 There are a few things to note about the above four transformations.
230
231 @itemize @bullet
232 @item
233 Comments and predefined macro names (or any macro names, for that
234 matter) are not recognized inside the argument of an @samp{#include}
235 directive, when it is delimited with quotes or with @samp{<} and
236 @samp{>}.
237
238 @item
239 Comments and predefined macro names are never recognized within a
240 character or string constant.
241
242 @item
243 ISO ``trigraphs'' are converted before backslash-newlines are deleted.
244 If you write what looks like a trigraph with a backslash-newline inside,
245 the backslash-newline is deleted as usual, but it is too late to
246 recognize the trigraph.
247
248 This is relevant only if you use the @samp{-trigraphs} option to enable
249 trigraph processing.  @xref{Invocation}.
250 @end itemize
251
252 The preprocessor handles null characters embedded in the input file
253 depending upon the context in which the null appears.  Note that here we
254 are referring not to the two-character escape sequence "\0", but to the
255 single character ASCII NUL.
256
257 There are three different contexts in which a null character may
258 appear:
259
260 @itemize @bullet
261 @item
262 Within comments.  Here, null characters are silently ignored.
263
264 @item
265 Within a string or character constant.  Here the preprocessor emits a
266 warning, but preserves the null character and passes it through to the
267 output file or compiler front-end.
268
269 @item
270 In any other context, the preprocessor issues a warning, and discards
271 the null character.  The preprocessor treats it like whitespace,
272 combining it with any surrounding whitespace to become a single
273 whitespace block.  Representing the null character by "^@@", this means
274 that code like
275
276 @example
277 #define X^@@1
278 @end example
279
280 is equivalent to
281
282 @example
283 #define X 1
284 @end example
285
286 and X is defined with replacement text "1".
287 @end itemize
288
289 @node Directives, Header Files, Global Actions, Top
290 @section Preprocessing Directives
291
292 @cindex preprocessing directives
293 @cindex directives
294 Most preprocessor features are active only if you use preprocessing
295 directives to request their use.
296
297 Preprocessing directives are lines in your program that start with
298 @samp{#}.  Whitespace is allowed before and after the @samp{#}.  The
299 @samp{#} is followed by an identifier that is the @dfn{directive name}.
300 For example, @samp{#define} is the directive that defines a macro.
301
302 Since the @samp{#} must be the first token on the line, it cannot come
303 from a macro expansion if you wish it to begin a directive.  Also, the
304 directive name is not macro expanded.  Thus, if @samp{foo} is defined as
305 a macro expanding to @samp{define}, that does not make @samp{#foo} a
306 valid preprocessing directive.
307
308 The set of valid directive names is fixed.  Programs cannot define new
309 preprocessing directives.
310
311 Some directive names require arguments; these make up the rest of the
312 directive line and must be separated from the directive name by
313 whitespace.  For example, @samp{#define} must be followed by a macro
314 name and the intended expansion of the macro.  @xref{Object-like
315 Macros}.
316
317 A preprocessing directive cannot cover more than one line.  It may be
318 logically extended with backslash-newline, but that has no effect on its
319 meaning.  Comments containing newlines can also divide the directive
320 into multiple lines, but a comment is replaced by a single space before
321 the directive is interpreted.
322
323 @node Header Files, Macros, Directives, Top
324 @section Header Files
325
326 @cindex header file
327 A header file is a file containing C declarations and macro definitions
328 (@pxref{Macros}) to be shared between several source files.  You request
329 the use of a header file in your program with the C preprocessing
330 directive @samp{#include}.
331
332 @menu
333 * Header Uses::         What header files are used for.
334 * Include Syntax::      How to write @samp{#include} directives.
335 * Include Operation::   What @samp{#include} does.
336 * Once-Only::           Preventing multiple inclusion of one header file.
337 * Inheritance::         Including one header file in another header file.
338 * System Headers::      Special treatment for some header files.
339 @end menu
340
341 @node Header Uses, Include Syntax, Header Files, Header Files
342 @subsection Uses of Header Files
343
344 Header files serve two kinds of purposes.
345
346 @itemize @bullet
347 @item
348 @cindex system header files
349 System header files declare the interfaces to parts of the operating
350 system.  You include them in your program to supply the definitions and
351 declarations you need to invoke system calls and libraries.
352
353 @item
354 Your own header files contain declarations for interfaces between the
355 source files of your program.  Each time you have a group of related
356 declarations and macro definitions all or most of which are needed in
357 several different source files, it is a good idea to create a header
358 file for them.
359 @end itemize
360
361 Including a header file produces the same results in C compilation as
362 copying the header file into each source file that needs it.  Such
363 copying would be time-consuming and error-prone.  With a header file,
364 the related declarations appear in only one place.  If they need to be
365 changed, they can be changed in one place, and programs that include the
366 header file will automatically use the new version when next recompiled.
367 The header file eliminates the labor of finding and changing all the
368 copies as well as the risk that a failure to find one copy will result
369 in inconsistencies within a program.
370
371 The usual convention is to give header files names that end with
372 @file{.h}.  Avoid unusual characters in header file names, as they
373 reduce portability.
374
375 @node Include Syntax, Include Operation, Header Uses, Header Files
376 @subsection The @samp{#include} Directive
377
378 @findex #include
379 Both user and system header files are included using the preprocessing
380 directive @samp{#include}.  It has three variants:
381
382 @table @code
383 @item #include <@var{file}>
384 This variant is used for system header files.  It searches for a file
385 named @var{file} in a list of directories specified by you, then in a
386 standard list of system directories.  You specify directories to search
387 for header files with the command option @samp{-I} (@pxref{Invocation}).
388 The option @samp{-nostdinc} inhibits searching the standard system
389 directories; in this case only the directories you specify are searched.
390
391 The first @samp{>} character terminates the file name.  The file name
392 may contain a @samp{<} character.
393
394 @item #include "@var{file}"
395 This variant is used for header files of your own program.  It searches
396 for a file named @var{file} first in the current directory, then in the
397 same directories used for system header files.  The current directory is
398 the directory of the current input file.  It is tried first because it
399 is presumed to be the location of the files that the current input file
400 refers to.  (If the @samp{-I-} option is used, the special treatment of
401 the current directory is inhibited. @xref{Invocation}.)
402
403 The first @samp{"} character terminates the file name.
404
405 In both these variants, the argument behaves like a string constant in
406 that comments are not recognized, and macro names are not expanded.
407 Thus, in @samp{#include <x/*y>} the @samp{/*} does not start a comment
408 and the directive specifies inclusion of a system header file named
409 @file{x/*y}.
410
411 However, in either variant, if backslashes occur within @var{file}, they
412 are considered ordinary text characters, not escape characters.  None of
413 the character escape sequences appropriate to string constants in C are
414 processed.  Thus, @samp{#include "x\n\\y"} specifies a filename
415 containing three backslashes.
416
417 @item #include @var{anything else}
418 @cindex computed @samp{#include}
419 This variant is called a @dfn{computed #include}.  Any @samp{#include}
420 directive whose argument does not fit the above two forms is a computed
421 include.  The text @var{anything else} is checked for macro calls, which
422 are expanded (@pxref{Macros}).  When this is done, the result must match
423 one of the above two variants --- in particular, the expansion must form
424 a string literal token, or a sequence of tokens surrounded by angle
425 braces. @xref{Implementation}.
426
427 This feature allows you to define a macro which controls the file name
428 to be used at a later point in the program.  One application of this is
429 to allow a site-specific configuration file for your program to specify
430 the names of the system include files to be used.  This can help in
431 porting the program to various operating systems in which the necessary
432 system header files are found in different places.
433 @end table
434
435 @node Include Operation, Once-Only, Include Syntax, Header Files
436 @subsection How @samp{#include} Works
437
438 The @samp{#include} directive works by directing the C preprocessor to
439 scan the specified file as input before continuing with the rest of the
440 current file.  The output from the preprocessor contains the output
441 already generated, followed by the output resulting from the included
442 file, followed by the output that comes from the text after the
443 @samp{#include} directive.  For example, given a header file
444 @file{header.h} as follows,
445
446 @example
447 char *test ();
448 @end example
449
450 @noindent
451 and a main program called @file{program.c} that uses the header file,
452 like this,
453
454 @example
455 int x;
456 #include "header.h"
457
458 main ()
459 @{
460   printf (test ());
461 @}
462 @end example
463
464 @noindent
465 the output generated by the C preprocessor for @file{program.c} as input
466 would be
467
468 @example
469 int x;
470 char *test ();
471
472 main ()
473 @{
474   printf (test ());
475 @}
476 @end example
477
478 Included files are not limited to declarations and macro definitions;
479 those are merely the typical uses.  Any fragment of a C program can be
480 included from another file.  The include file could even contain the
481 beginning of a statement that is concluded in the containing file, or
482 the end of a statement that was started in the including file.  However,
483 a comment or a string or character constant may not start in the
484 included file and finish in the including file.  An unterminated
485 comment, string constant or character constant in an included file is
486 considered to end (with an error message) at the end of the file.
487
488 It is possible for a header file to begin or end a syntactic unit such
489 as a function definition, but that would be very confusing, so don't do
490 it.
491
492 The line following the @samp{#include} directive is always treated as a
493 separate line by the C preprocessor, even if the included file lacks a
494 final newline.
495
496 @node Once-Only, Inheritance, Include Operation, Header Files
497 @subsection Once-Only Include Files
498 @cindex repeated inclusion
499 @cindex including just once
500
501 Very often, one header file includes another.  It can easily result that
502 a certain header file is included more than once.  This may lead to
503 errors, if the header file defines structure types or typedefs, and is
504 certainly wasteful.  Therefore, we often wish to prevent multiple
505 inclusion of a header file.
506
507 The standard way to do this is to enclose the entire real contents of the
508 file in a conditional, like this:
509
510 @example
511 #ifndef FILE_FOO_SEEN
512 #define FILE_FOO_SEEN
513
514 @var{the entire file}
515
516 #endif /* FILE_FOO_SEEN */
517 @end example
518
519 The macro @code{FILE_FOO_SEEN} indicates that the file has been included
520 once already.  In a user header file, the macro name should not begin
521 with @samp{_}.  In a system header file, this name should begin with
522 @samp{__} to avoid conflicts with user programs.  In any kind of header
523 file, the macro name should contain the name of the file and some
524 additional text, to avoid conflicts with other header files.
525
526 The GNU C preprocessor is programmed to notice when a header file uses
527 this particular construct and handle it efficiently.  If a header file
528 is contained entirely in a @samp{#ifndef} conditional, modulo whitespace
529 and comments, then it remembers that fact.  If a subsequent
530 @samp{#include} specifies the same file, and the macro in the
531 @samp{#ifndef} is already defined, then the directive is skipped without
532 processing the specified file at all.
533
534 @findex #import
535 In the Objective C language, there is a variant of @samp{#include}
536 called @samp{#import} which includes a file, but does so at most once.
537 If you use @samp{#import} @emph{instead of} @samp{#include}, then you
538 don't need the conditionals inside the header file to prevent multiple
539 execution of the contents.
540
541 @samp{#import} is obsolete because it is not a well designed feature.
542 It requires the users of a header file --- the applications programmers
543 --- to know that a certain header file should only be included once.  It
544 is much better for the header file's implementor to write the file so
545 that users don't need to know this.  Using @samp{#ifndef} accomplishes
546 this goal.
547
548 @node Inheritance, System Headers, Once-Only, Header Files
549 @subsection Inheritance and Header Files
550 @cindex inheritance
551 @cindex overriding a header file
552
553 @dfn{Inheritance} is what happens when one object or file derives some
554 of its contents by virtual copying from another object or file.  In
555 the case of C header files, inheritance means that one header file 
556 includes another header file and then replaces or adds something.
557
558 If the inheriting header file and the base header file have different
559 names, then inheritance is straightforward: simply write @samp{#include
560 "@var{base}"} in the inheriting file.
561
562 Sometimes it is necessary to give the inheriting file the same name as
563 the base file.  This is less straightforward.
564
565 For example, suppose an application program uses the system header
566 @file{sys/signal.h}, but the version of @file{/usr/include/sys/signal.h}
567 on a particular system doesn't do what the application program expects.
568 It might be convenient to define a ``local'' version, perhaps under the
569 name @file{/usr/local/include/sys/signal.h}, to override or add to the
570 one supplied by the system.
571
572 You can do this by compiling with the option @samp{-I.}, and writing a
573 file @file{sys/signal.h} that does what the application program expects.
574 Making this file include the standard @file{sys/signal.h} is not so easy
575 --- writing @samp{#include <sys/signal.h>} in that file doesn't work,
576 because it includes your own version of the file, not the standard
577 system version.  Used in that file itself, this leads to an infinite
578 recursion and a fatal error in compilation.
579
580 @samp{#include </usr/include/sys/signal.h>} would find the proper file,
581 but that is not clean, since it makes an assumption about where the
582 system header file is found.  This is bad for maintenance, since it
583 means that any change in where the system's header files are kept
584 requires a change somewhere else.
585
586 @findex #include_next
587 The clean way to solve this problem is to use 
588 @samp{#include_next}, which means, ``Include the @emph{next} file with
589 this name.''  This directive works like @samp{#include} except in
590 searching for the specified file: it starts searching the list of header
591 file directories @emph{after} the directory in which the current file
592 was found.
593
594 Suppose you specify @samp{-I /usr/local/include}, and the list of
595 directories to search also includes @file{/usr/include}; and suppose
596 both directories contain @file{sys/signal.h}.  Ordinary @samp{#include
597 <sys/signal.h>} finds the file under @file{/usr/local/include}.  If that
598 file contains @samp{#include_next <sys/signal.h>}, it starts searching
599 after that directory, and finds the file in @file{/usr/include}.
600
601 @samp{#include_next} is a GCC extension and should not be used in
602 programs intended to be portable to other compilers.
603
604 @node System Headers,, Inheritance, Header Files
605 @subsection System Headers
606 @cindex system header files
607
608 The header files declaring interfaces to the operating system and
609 runtime libraries often cannot be written in strictly conforming C.
610 Therefore, GNU C gives code found in @dfn{system headers} special
611 treatment.  Certain categories of warnings are suppressed, notably those
612 enabled by @samp{-pedantic}.
613
614 Normally, only the headers found in specific directories are considered
615 system headers.  The set of these directories is determined when GCC is
616 compiled.  There are, however, two ways to add to the set.
617
618 @findex -isystem
619 The @samp{-isystem} command line option adds its argument to the list of
620 directories to search for headers, just like @samp{-I}.  In addition,
621 any headers found in that directory will be considered system headers.
622 Note that unlike @samp{-I}, you must put a space between @samp{-isystem}
623 and its argument.
624
625 All directories named by @samp{-isystem} are searched @strong{after} all
626 directories named by @samp{-I}, no matter what their order was on the
627 command line.  If the same directory is named by both @samp{-I} and
628 @samp{-isystem}, @samp{-I} wins; it is as if the @samp{-isystem} option
629 had never been specified at all.
630
631 @findex #pragma GCC system_header
632 There is also a directive, @samp{#pragma GCC system_header}, which tells
633 GCC to consider the rest of the current include file a system header, no
634 matter where it was found.  Code that comes before the @samp{#pragma} in
635 the file will not be affected.
636
637 @samp{#pragma GCC system_header} has no effect in the primary source file.
638
639 @node Macros, Conditionals, Header Files, Top
640 @section Macros
641
642 A macro is a sort of abbreviation which you can define once and then
643 use later.  There are many complicated features associated with macros
644 in the C preprocessor.
645
646 @menu
647 * Object-like Macros::   Macros that always expand the same way.
648 * Function-like Macros:: Macros that accept arguments that are substituted
649                          into the macro expansion.
650 * Macro Varargs::        Macros with variable number of arguments.
651 * Predefined::           Predefined macros that are always available.
652 * Stringification::      Macro arguments converted into string constants.
653 * Concatenation::        Building tokens from parts taken from macro arguments.
654 * Undefining::           Cancelling a macro's definition.
655 * Redefining::           Changing a macro's definition.
656 * Poisoning::            Ensuring a macro is never defined or used.
657 * Macro Pitfalls::       Macros can confuse the unwary.  Here we explain
658                            several common problems and strange features.
659 @end menu
660
661 @node Object-like Macros, Function-like Macros, Macros, Macros
662 @subsection Object-like Macros
663 @cindex object-like macro
664 @cindex manifest constant
665
666 An @dfn{object-like macro} is a kind of abbreviation.  It is a name
667 which stands for a fragment of code.  Some people refer to these as
668 @dfn{manifest constants}.
669
670 Before you can use a macro, you must @dfn{define} it explicitly with the
671 @samp{#define} directive.  @samp{#define} is followed by the name of the
672 macro and then the token sequence it should be an abbreviation for,
673 which is variously referred to as the macro's @dfn{body},
674 @dfn{expansion} or @dfn{replacement list}.  For example,
675
676 @example
677 #define BUFFER_SIZE 1020
678 @end example
679
680 @noindent
681 defines a macro named @samp{BUFFER_SIZE} as an abbreviation for the
682 token @samp{1020}.  If somewhere after this @samp{#define} directive
683 there comes a C statement of the form
684
685 @example
686 foo = (char *) xmalloc (BUFFER_SIZE);
687 @end example
688
689 @noindent
690 then the C preprocessor will recognize and @dfn{expand} the macro
691 @samp{BUFFER_SIZE}, resulting in
692
693 @example
694 foo = (char *) xmalloc (1020);
695 @end example
696
697 The use of all upper case for macro names is a standard convention.
698 Programs are easier to read when it is possible to tell at a glance
699 which names are macros.
700
701 Normally, a macro definition can only span a single logical line, like
702 all C preprocessing directives.  Comments within a macro definition may
703 contain newlines, which make no difference since each comment is
704 replaced by a space regardless of its contents.
705
706 Apart from this, there is no restriction on what can go in a macro body
707 provided it decomposes into valid preprocessing tokens.  In particular,
708 parentheses need not balance, and the body need not resemble valid C
709 code.  (If it does not, you may get error messages from the C
710 compiler when you use the macro.)
711
712 The C preprocessor scans your program sequentially, so macro definitions
713 take effect at the place you write them.  Therefore, the following input
714 to the C preprocessor
715
716 @example
717 foo = X;
718 #define X 4
719 bar = X;
720 @end example
721
722 @noindent
723 produces as output
724
725 @example
726 foo = X;
727
728 bar = 4;
729 @end example
730
731 When the preprocessor expands a macro name, the macro's expansion
732 replaces the macro invocation, and the result is re-scanned for more
733 macros to expand.  For example, after
734
735 @example
736 #define BUFSIZE 1020
737 #define TABLESIZE BUFSIZE
738 @end example
739
740 @noindent
741 the name @samp{TABLESIZE} when used in the program would go through two
742 stages of expansion, resulting ultimately in @samp{1020}.
743
744 This is not the same as defining @samp{TABLESIZE} to be @samp{1020}.
745 The @samp{#define} for @samp{TABLESIZE} uses exactly the expansion you
746 specify --- in this case, @samp{BUFSIZE} --- and does not check to see
747 whether it too contains macro names.  Only when you @emph{use}
748 @samp{TABLESIZE} is the result of its expansion scanned for more macro
749 names.  @xref{Cascaded Macros}.
750
751 @node Function-like Macros, Macro Varargs, Object-like Macros, Macros
752 @subsection Macros with Arguments
753 @cindex macros with argument
754 @cindex arguments in macro definitions
755 @cindex function-like macro
756
757 An object-like macro is always replaced by exactly the same tokens each
758 time it is used.  Macros can be made more flexible by taking
759 @dfn{arguments}.  Arguments are fragments of code that you supply each
760 time the macro is used.  These fragments are included in the expansion
761 of the macro according to the directions in the macro definition.  A
762 macro that accepts arguments is called a @dfn{function-like macro}
763 because the syntax for using it looks like a function call.
764
765 @findex #define
766 To define a macro that uses arguments, you write a @samp{#define}
767 directive with a list of @dfn{parameters} in parentheses after the name
768 of the macro.  The parameters must be valid C identifiers, separated by
769 commas and optionally whitespace.  The @samp{(} must follow the macro
770 name immediately, with no space in between.  If you leave a space, you
771 instead define an object-like macro whose expansion begins with a
772 @samp{(}, and often leads to confusing errors at compile time.
773
774 As an example, here is a macro that computes the minimum of two numeric
775 values, as it is defined in many C programs:
776
777 @example
778 #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
779 @end example
780
781 @noindent
782 (This is not the best way to define a ``minimum'' macro in GNU C@.
783 @xref{Side Effects}, for more information.)
784
785 To invoke a function-like macro, you write the name of the macro
786 followed by a list of @dfn{arguments} in parentheses, separated by
787 commas.  The invocation of the macro need not be restricted to a single
788 logical line - it can cross as many lines in the source file as you
789 wish.  The number of arguments you give must match the number of
790 parameters in the macro definition; empty arguments are fine.  Examples
791 of use of the macro @samp{min} include @samp{min (1, 2)} and @samp{min
792 (x + 28, *p)}.
793
794 The expansion text of the macro depends on the arguments you use.  Each
795 macro parameter is replaced throughout the macro expansion with the
796 tokens of the corresponding argument.  Leading and trailing argument
797 whitespace is dropped, and all whitespace between the tokens of an
798 argument is reduced to a single space.  Using the same macro @samp{min}
799 defined above, @samp{min (1, 2)} expands into
800
801 @example
802 ((1) < (2) ? (1) : (2))
803 @end example
804
805 @noindent
806 where @samp{1} has been substituted for @samp{X} and @samp{2} for @samp{Y}.
807
808 Likewise, @samp{min (x + 28, *p)} expands into
809
810 @example
811 ((x + 28) < (*p) ? (x + 28) : (*p))
812 @end example
813
814 Parentheses within each argument must balance; a comma within such
815 parentheses does not end the argument.  However, there is no requirement
816 for square brackets or braces to balance, and they do not prevent a
817 comma from separating arguments.  Thus,
818
819 @example
820 macro (array[x = y, x + 1])
821 @end example
822
823 @noindent
824 passes two arguments to @code{macro}: @samp{array[x = y} and @samp{x +
825 1]}.  If you want to supply @samp{array[x = y, x + 1]} as an argument,
826 you must write it as @samp{array[(x = y, x + 1)]}, which is equivalent C
827 code.
828
829 After the arguments have been substituted into the macro body, the
830 resulting expansion replaces the macro invocation, and re-scanned for
831 more macro calls.  Therefore even arguments can contain calls to other
832 macros, either with or without arguments, and even to the same macro.
833 For example, @samp{min (min (a, b), c)} expands into this text:
834
835 @example
836 ((((a) < (b) ? (a) : (b))) < (c)
837  ? (((a) < (b) ? (a) : (b)))
838  : (c))
839 @end example
840
841 @noindent
842 (Line breaks shown here for clarity would not actually be generated.)
843
844 @cindex empty macro arguments
845 If a macro @code{foo} takes one argument, and you want to supply an
846 empty argument, simply supply no preprocessing tokens.  Since whitespace
847 does not form a preprocessing token, it is optional.  For example,
848 @samp{foo ()}, @samp{foo ( )} and @samp{bar (, arg2)}.
849
850 Previous GNU preprocessor implementations and documentation were
851 incorrect on this point, insisting that a function-like macro that takes
852 a single argument be passed a space if an empty argument was required.
853
854 If you use a macro name followed by something other than a @samp{(}
855 (after ignoring any whitespace that might follow), it does not form an
856 invocation of the macro, and the preprocessor does not change what you
857 have written.  Therefore, it is possible for the same identifier to be a
858 variable or function in your program as well as a macro, and you can
859 choose in each instance whether to refer to the macro (if an actual
860 argument list follows) or the variable or function (if an argument list
861 does not follow).  For example,
862
863 @example
864 #define foo(X) X
865 foo bar foo(baz)
866 @end example
867
868 expands to @samp{foo bar baz}.  Such dual use of one name could be
869 confusing and should be avoided except when the two meanings are
870 effectively synonymous: that is, when the name is both a macro and a
871 function and the two have similar effects.  You can think of the name
872 simply as a function; use of the name for purposes other than calling it
873 (such as, to take the address) will refer to the function, while calls
874 will expand the macro and generate better but equivalent code.
875
876 For example, you can use a function named @samp{min} in the same source
877 file that defines the macro.  If you write @samp{&min} with no argument
878 list, you refer to the function.  If you write @samp{min (x, bb)}, with
879 an argument list, the macro is expanded.  If you write @samp{(min) (a,
880 bb)}, where the name @samp{min} is not followed by an open-parenthesis,
881 the macro is not expanded, so you wind up with a call to the function
882 @samp{min}.
883
884 In the definition of a macro with arguments, the list of argument names
885 must follow the macro name immediately with no space in between.  If
886 there is a space after the macro name, the macro is defined as taking no
887 arguments, and all the rest of the line is taken to be the expansion.
888 The reason for this is that it is often useful to define a macro that
889 takes no arguments and whose definition begins with an identifier in
890 parentheses.  This rule makes it possible for you to do either this:
891
892 @example
893 #define FOO(x) - 1 / (x)
894 @end example
895
896 @noindent
897 (which defines @samp{FOO} to take an argument and expand into minus the
898 reciprocal of that argument) or this:
899
900 @example
901 #define BAR (x) - 1 / (x)
902 @end example
903
904 @noindent
905 (which defines @samp{BAR} to take no argument and always expand into
906 @samp{(x) - 1 / (x)}).
907
908 Note that the @emph{uses} of a macro with arguments can have spaces
909 before the left parenthesis; it's the @emph{definition} where it matters
910 whether there is a space.
911
912 @node Macro Varargs, Predefined, Function-like Macros, Macros
913 @subsection Macros with Variable Numbers of Arguments
914 @cindex variable number of arguments
915 @cindex macro with variable arguments
916 @cindex rest argument (in macro)
917
918 In the ISO C standard of 1999, a macro can be declared to accept a
919 variable number of arguments much as a function can.  The syntax for
920 defining the macro is similar to that of a function.  Here is an
921 example:
922
923 @example
924 #define eprintf(...) fprintf (stderr, __VA_ARGS__)
925 @end example
926
927 Here @samp{@dots{}} is a @dfn{variable argument}.  In the invocation of
928 such a macro, it represents the zero or more tokens until the closing
929 parenthesis that ends the invocation, including any commas.  This set of
930 tokens replaces the identifier @code{__VA_ARGS__} in the macro body
931 wherever it appears.  Thus, we have this expansion:
932
933 @example
934 eprintf ("%s:%d: ", input_file_name, line_number)
935 @expansion{}
936 fprintf (stderr, "%s:%d: " , input_file_name, line_number)
937 @end example
938
939 Within a @samp{#define} directive, ISO C mandates that the only place
940 the identifier @code{__VA_ARGS__} can appear is in the replacement list
941 of a variable-argument macro.  It may not be used as a macro name, macro
942 argument name, or within a different type of macro.  It may also be
943 forbidden in open text; the standard is ambiguous.  We recommend you
944 avoid using it except for its defined purpose.
945
946 If your macro is complicated, you may want a more descriptive name for
947 the variable argument than @code{__VA_ARGS__}.  GNU cpp permits this, as
948 an extension.  You may write an argument name immediately before the
949 @samp{@dots{}}; that name is used for the variable argument.  The
950 @code{eprintf} macro above could be written
951
952 @example
953 #define eprintf(args...) fprintf (stderr, args)
954 @end example
955
956 @noindent
957 using this extension.  You cannot use @code{__VA_ARGS__} and this
958 extension in the same macro.
959
960 We might instead have defined eprintf as follows:
961
962 @example
963 #define eprintf(format, ...) fprintf (stderr, format, __VA_ARGS__)
964 @end example
965
966 This formulation looks more descriptive, but cannot be used as flexibly.
967 There is no way to produce expanded output of
968
969 @example
970 fprintf (stderr, "success!\n")
971 @end example
972
973 @noindent
974 because, in standard C, you are not allowed to leave the variable
975 argument out entirely, and passing an empty argument for the variable
976 arguments will not do what you want.  Writing
977
978 @example
979 eprintf ("success!\n", )
980 @end example
981
982 @noindent
983 produces
984
985 @example
986 fprintf (stderr, "success!\n",)
987 @end example
988
989 @noindent
990 where the extra comma originates from the replacement list and not from
991 the arguments to eprintf.
992
993 There is another extension in the GNU C preprocessor which deals with
994 this difficulty.  First, you are allowed to leave the variable argument
995 out entirely:
996
997 @example
998 eprintf ("success!\n")
999 @end example
1000
1001 Second, the @samp{##} token paste operator has a special meaning when
1002 placed between a comma and a variable argument.  If you write
1003
1004 @example
1005 #define eprintf(format, ...) fprintf (stderr, format, ##__VA_ARGS__)
1006 @end example
1007
1008 and the variable argument is left out when the @samp{eprintf} macro is
1009 used, then the comma before the @samp{##} will be deleted.  This does
1010 @emph{not} happen if you pass an empty argument, nor does it happen if
1011 the token preceding @samp{##} is anything other than a comma.
1012
1013 Previous versions of the preprocessor implemented this extension much
1014 more generally.  We have restricted it in order to minimize the
1015 difference from the C standard.  @xref{Unreliable Features}.
1016
1017 @node Predefined, Stringification, Macro Varargs, Macros
1018 @subsection Predefined Macros
1019
1020 @cindex predefined macros
1021 Several object-like macros are predefined; you use them without
1022 supplying their definitions.  They fall into two classes: standard
1023 macros and system-specific macros.
1024
1025 @menu
1026 * Standard Predefined::     Standard predefined macros.
1027 * Nonstandard Predefined::  Nonstandard predefined macros.
1028 @end menu
1029
1030 @node Standard Predefined, Nonstandard Predefined, Predefined, Predefined
1031 @subsubsection Standard Predefined Macros
1032 @cindex standard predefined macros
1033
1034 The standard predefined macros are available with the same meanings
1035 regardless of the machine or operating system on which you are using GNU
1036 C@.  Their names all start and end with double underscores.  Those
1037 preceding @code{__GNUC__} in this table are standardized by ISO C; the
1038 rest are GNU C extensions.
1039
1040 @table @code
1041 @item __FILE__
1042 @findex __FILE__
1043 This macro expands to the name of the current input file, in the form of
1044 a C string constant.  The precise name returned is the one that was
1045 specified in @samp{#include} or as the input file name argument.  For
1046 example, @samp{"/usr/local/include/myheader.h"} is a possible expansion
1047 of this macro.
1048
1049 @item __LINE__
1050 @findex __LINE__
1051 This macro expands to the current input line number, in the form of a
1052 decimal integer constant.  While we call it a predefined macro, it's
1053 a pretty strange macro, since its ``definition'' changes with each
1054 new line of source code.
1055
1056 This and @samp{__FILE__} are useful in generating an error message to
1057 report an inconsistency detected by the program; the message can state
1058 the source line at which the inconsistency was detected.  For example,
1059
1060 @smallexample
1061 fprintf (stderr, "Internal error: "
1062                  "negative string length "
1063                  "%d at %s, line %d.",
1064          length, __FILE__, __LINE__);
1065 @end smallexample
1066
1067 A @samp{#include} directive changes the expansions of @samp{__FILE__}
1068 and @samp{__LINE__} to correspond to the included file.  At the end of
1069 that file, when processing resumes on the input file that contained
1070 the @samp{#include} directive, the expansions of @samp{__FILE__} and
1071 @samp{__LINE__} revert to the values they had before the
1072 @samp{#include} (but @samp{__LINE__} is then incremented by one as
1073 processing moves to the line after the @samp{#include}).
1074
1075 The expansions of both @samp{__FILE__} and @samp{__LINE__} are altered
1076 if a @samp{#line} directive is used.  @xref{Line Control}.
1077
1078 @item __DATE__
1079 @findex __DATE__
1080 This macro expands to a string constant that describes the date on
1081 which the preprocessor is being run.  The string constant contains
1082 eleven characters and looks like @w{@samp{"Feb  1 1996"}}.
1083 @c After reformatting the above, check that the date remains `Feb  1 1996',
1084 @c all on one line, with two spaces between the `Feb' and the `1'.
1085
1086 @item __TIME__
1087 @findex __TIME__
1088 This macro expands to a string constant that describes the time at
1089 which the preprocessor is being run.  The string constant contains
1090 eight characters and looks like @samp{"23:59:01"}.
1091
1092 @item __STDC__
1093 @findex __STDC__
1094 This macro expands to the constant 1, to signify that this is ISO
1095 Standard C@.  (Whether that is actually true depends on what C compiler
1096 will operate on the output from the preprocessor.)
1097
1098 On some hosts, system include files use a different convention, where
1099 @samp{__STDC__} is normally 0, but is 1 if the user specifies strict
1100 conformance to the C Standard.  The preprocessor follows the host
1101 convention when processing system include files, but when processing
1102 user files it follows the usual GNU C convention.
1103
1104 This macro is not defined if the @samp{-traditional} option is used.
1105
1106 @item __STDC_VERSION__
1107 @findex __STDC_VERSION__
1108 This macro expands to the C Standard's version number, a long integer
1109 constant of the form @samp{@var{yyyy}@var{mm}L} where @var{yyyy} and
1110 @var{mm} are the year and month of the Standard version.  This signifies
1111 which version of the C Standard the preprocessor conforms to.  Like
1112 @samp{__STDC__}, whether this version number is accurate for the entire
1113 implementation depends on what C compiler will operate on the output
1114 from the preprocessor.
1115
1116 This macro is not defined if the @samp{-traditional} option is used.
1117
1118 @item __GNUC__
1119 @findex __GNUC__
1120 This macro is defined if and only if this is GNU C@.  This macro is
1121 defined only when the entire GNU C compiler is in use; if you invoke the
1122 preprocessor directly, @samp{__GNUC__} is undefined.  The value
1123 identifies the major version number of GNU CC (@samp{1} for GNU CC
1124 version 1, which is now obsolete, and @samp{2} for version 2).
1125
1126 @item __GNUC_MINOR__
1127 @findex __GNUC_MINOR__
1128 The macro contains the minor version number of the compiler.  This can
1129 be used to work around differences between different releases of the
1130 compiler (for example, if GCC 2.6.x is known to support a feature, you
1131 can test for @code{__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6)}).
1132
1133 @item __GNUC_PATCHLEVEL__
1134 @findex __GNUC_PATCHLEVEL__
1135 This macro contains the patch level of the compiler.  This can be
1136 used to work around differences between different patch level releases
1137 of the compiler (for example, if GCC 2.6.2 is known to contain a bug,
1138 whereas GCC 2.6.3 contains a fix, and you have code which can workaround
1139 the problem depending on whether the bug is fixed or not, you can test for
1140 @code{__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 6) || 
1141 (__GNUC__ == 2 && __GNUC_MINOR__ == 6 && __GNUC_PATCHLEVEL__ >= 3)}).
1142
1143 @item __GNUG__
1144 @findex __GNUG__
1145 The GNU C compiler defines this when the compilation language is
1146 C++; use @samp{__GNUG__} to distinguish between GNU C and GNU
1147 C++.
1148
1149 @item __cplusplus 
1150 @findex __cplusplus 
1151 The ISO standard for C++ requires predefining this variable.  You can
1152 use @samp{__cplusplus} to test whether a header is compiled by a C
1153 compiler or a C++ compiler. The compiler currently uses a value of
1154 @samp{1}, instead of the value @samp{199711L}, which would indicate full
1155 conformance with the standard.
1156
1157 @item __STRICT_ANSI__
1158 @findex __STRICT_ANSI__
1159 GNU C defines this macro if and only if the @option{-ansi} switch, or a
1160 @option{-std} switch specifying strict conformance to some version of ISO C,
1161 was specified when GNU C was invoked.  Its definition is the null string.
1162 This macro exists primarily to direct certain GNU header files not to
1163 define certain traditional Unix constructs which are incompatible with
1164 ISO C@.
1165
1166 @item __BASE_FILE__
1167 @findex __BASE_FILE__
1168 This macro expands to the name of the main input file, in the form
1169 of a C string constant.  This is the source file that was specified
1170 on the command line of the preprocessor or C compiler.
1171
1172 @item __INCLUDE_LEVEL__
1173 @findex __INCLUDE_LEVEL_
1174 This macro expands to a decimal integer constant that represents the
1175 depth of nesting in include files.  The value of this macro is
1176 incremented on every @samp{#include} directive and decremented at the
1177 end of every included file.  It starts out at 0, it's value within the
1178 base file specified on the command line.
1179
1180 @item __VERSION__
1181 @findex __VERSION__
1182 This macro expands to a string constant which describes the version
1183 number of GNU C@.  The string is normally a sequence of decimal numbers
1184 separated by periods, such as @samp{"2.6.0"}.
1185
1186 @item __OPTIMIZE__
1187 @findex __OPTIMIZE__
1188 GNU CC defines this macro in optimizing compilations.  It causes certain
1189 GNU header files to define alternative macro definitions for some system
1190 library functions.  You should not refer to or test the definition of
1191 this macro unless you make very sure that programs will execute with the
1192 same effect regardless.
1193
1194 @item __CHAR_UNSIGNED__
1195 @findex __CHAR_UNSIGNED__
1196 GNU C defines this macro if and only if the data type @code{char} is
1197 unsigned on the target machine.  It exists to cause the standard header
1198 file @file{limits.h} to work correctly.  You should not refer to this
1199 macro yourself; instead, refer to the standard macros defined in
1200 @file{limits.h}.  The preprocessor uses this macro to determine whether
1201 or not to sign-extend large character constants written in octal; see
1202 @ref{#if Directive,,The @samp{#if} Directive}.
1203
1204 @item __REGISTER_PREFIX__
1205 @findex __REGISTER_PREFIX__
1206 This macro expands to a string (not a string constant) describing the
1207 prefix applied to CPU registers in assembler code.  You can use it to
1208 write assembler code that is usable in multiple environments.  For
1209 example, in the @samp{m68k-aout} environment it expands to the null
1210 string, but in the @samp{m68k-coff} environment it expands to the string
1211 @samp{%}.
1212
1213 @item __USER_LABEL_PREFIX__
1214 @findex __USER_LABEL_PREFIX__
1215 Similar to @code{__REGISTER_PREFIX__}, but describes the prefix applied
1216 to user generated labels in assembler code.  For example, in the
1217 @samp{m68k-aout} environment it expands to the string @samp{_}, but in
1218 the @samp{m68k-coff} environment it expands to the null string.  This
1219 does not work with the @samp{-mno-underscores} option that the i386
1220 OSF/rose and m88k targets provide nor with the @samp{-mcall*} options of
1221 the rs6000 System V Release 4 target.
1222 @end table
1223
1224 @node Nonstandard Predefined,, Standard Predefined, Predefined
1225 @subsubsection Nonstandard Predefined Macros
1226
1227 The C preprocessor normally has several predefined macros that vary
1228 between machines because their purpose is to indicate what type of
1229 system and machine is in use.  This manual, being for all systems and
1230 machines, cannot tell you exactly what their names are; instead, we
1231 offer a list of some typical ones.  You can use @samp{cpp -dM} to see
1232 the values of predefined macros; see @ref{Invocation}.
1233
1234 Some nonstandard predefined macros describe the operating system in use,
1235 with more or less specificity.  For example,
1236
1237 @table @code
1238 @item unix
1239 @findex unix
1240 @samp{unix} is normally predefined on all Unix systems.
1241
1242 @item BSD
1243 @findex BSD
1244 @samp{BSD} is predefined on recent versions of Berkeley Unix
1245 (perhaps only in version 4.3).
1246 @end table
1247
1248 Other nonstandard predefined macros describe the kind of CPU, with more or
1249 less specificity.  For example,
1250
1251 @table @code
1252 @item vax
1253 @findex vax
1254 @samp{vax} is predefined on Vax computers.
1255
1256 @item mc68000
1257 @findex mc68000
1258 @samp{mc68000} is predefined on most computers whose CPU is a Motorola
1259 68000, 68010 or 68020.
1260
1261 @item m68k
1262 @findex m68k
1263 @samp{m68k} is also predefined on most computers whose CPU is a 68000,
1264 68010 or 68020; however, some makers use @samp{mc68000} and some use
1265 @samp{m68k}.  Some predefine both names.  What happens in GNU C
1266 depends on the system you are using it on.
1267
1268 @item M68020
1269 @findex M68020
1270 @samp{M68020} has been observed to be predefined on some systems that
1271 use 68020 CPUs --- in addition to @samp{mc68000} and @samp{m68k}, which
1272 are less specific.
1273
1274 @item _AM29K
1275 @findex _AM29K
1276 @itemx _AM29000
1277 @findex _AM29000
1278 Both @samp{_AM29K} and @samp{_AM29000} are predefined for the AMD 29000
1279 CPU family.
1280
1281 @item ns32000
1282 @findex ns32000
1283 @samp{ns32000} is predefined on computers which use the National
1284 Semiconductor 32000 series CPU.
1285 @end table
1286
1287 Yet other nonstandard predefined macros describe the manufacturer of
1288 the system.  For example,
1289
1290 @table @code
1291 @item sun
1292 @findex sun
1293 @samp{sun} is predefined on all models of Sun computers.
1294
1295 @item pyr
1296 @findex pyr
1297 @samp{pyr} is predefined on all models of Pyramid computers.
1298
1299 @item sequent
1300 @findex sequent
1301 @samp{sequent} is predefined on all models of Sequent computers.
1302 @end table
1303
1304 These predefined symbols are not only nonstandard, they are contrary to the
1305 ISO standard because their names do not start with underscores.
1306 Therefore, the option @samp{-ansi} inhibits the definition of these
1307 symbols.
1308
1309 This tends to make @samp{-ansi} useless, since many programs depend on
1310 the customary nonstandard predefined symbols.  Even system header files
1311 check them and will generate incorrect declarations if they do not find
1312 the names that are expected.  You might think that the header files
1313 supplied for the Uglix computer would not need to test what machine they
1314 are running on, because they can simply assume it is the Uglix; but
1315 often they do, and they do so using the customary names.  As a result,
1316 very few C programs will compile with @samp{-ansi}.  We intend to avoid
1317 such problems on the GNU system.
1318
1319 What, then, should you do in an ISO C program to test the type of machine
1320 it will run on?
1321
1322 GNU C offers a parallel series of symbols for this purpose, whose names
1323 are made from the customary ones by adding @samp{__} at the beginning
1324 and end.  Thus, the symbol @code{__vax__} would be available on a Vax,
1325 and so on.
1326
1327 The set of nonstandard predefined names in the GNU C preprocessor is
1328 controlled (when @code{cpp} is itself compiled) by the macro
1329 @samp{CPP_PREDEFINES}, which should be a string containing @samp{-D}
1330 options, separated by spaces.  For example, on the Sun 3, we use the
1331 following definition:
1332
1333 @example
1334 #define CPP_PREDEFINES "-Dmc68000 -Dsun -Dunix -Dm68k"
1335 @end example
1336
1337 @noindent 
1338 This macro is usually specified in @file{tm.h}.
1339
1340 @node Stringification, Concatenation, Predefined, Macros
1341 @subsection Stringification
1342
1343 @cindex stringification
1344 @dfn{Stringification} means turning a sequence of preprocessing tokens
1345 into a string literal.  For example, stringifying @samp{foo (z)} results
1346 in @samp{"foo (z)"}.
1347
1348 In the C preprocessor, stringification is possible when macro arguments
1349 are substituted during macro expansion.  When a parameter appears
1350 preceded by a @samp{#} token in the replacement list of a function-like
1351 macro, it indicates that both tokens should be replaced with the
1352 stringification of the corresponding argument during expansion.  The
1353 same argument may be substituted in other places in the definition
1354 without stringification if the argument name appears in those places
1355 with no preceding @samp{#}.
1356
1357 Here is an example of a macro definition that uses stringification:
1358
1359 @smallexample
1360 @group
1361 #define WARN_IF(EXP) \
1362 do @{ if (EXP) \
1363         fprintf (stderr, "Warning: " #EXP "\n"); @} \
1364 while (0)
1365 @end group
1366 @end smallexample
1367
1368 @noindent
1369 Here the argument for @samp{EXP} is substituted once, as-is, into the
1370 @samp{if} statement, and once, stringified, into the argument to
1371 @samp{fprintf}.  The @samp{do} and @samp{while (0)} are a kludge to make
1372 it possible to write @samp{WARN_IF (@var{arg});}, which the resemblance
1373 of @samp{WARN_IF} to a function would make C programmers want to do; see
1374 @ref{Swallow Semicolon}.
1375
1376 The stringification feature is limited to transforming the tokens of a
1377 macro argument into a string constant: there is no way to combine the
1378 argument with surrounding text and stringify it all together.  The
1379 example above shows how an equivalent result can be obtained in ISO
1380 Standard C, using the fact that adjacent string constants are
1381 concatenated by the C compiler to form a single string constant.  The
1382 preprocessor stringifies the actual value of @samp{EXP} into a separate
1383 string constant, resulting in text like
1384
1385 @smallexample
1386 @group
1387 do @{ if (x == 0) \
1388         fprintf (stderr, "Warning: " "x == 0" "\n"); @} \
1389 while (0)
1390 @end group
1391 @end smallexample
1392
1393 @noindent
1394 but the compiler then sees three consecutive string constants and
1395 concatenates them into one, producing effectively
1396
1397 @smallexample
1398 do @{ if (x == 0) \
1399         fprintf (stderr, "Warning: x == 0\n"); @} \
1400 while (0)
1401 @end smallexample
1402
1403 Stringification in C involves more than putting double-quote characters
1404 around the fragment.  The preprocessor backslash-escapes the surrounding
1405 quotes of string literals, and all backslashes within string and
1406 character constants, in order to get a valid C string constant with the
1407 proper contents.  Thus, stringifying @samp{p = "foo\n";} results in
1408 @samp{"p = \"foo\\n\";"}.  However, backslashes that are not inside
1409 string or character constants are not duplicated: @samp{\n} by itself
1410 stringifies to @samp{"\n"}.
1411
1412 Whitespace (including comments) in the text being stringified is handled
1413 according to precise rules.  All leading and trailing whitespace is
1414 ignored.  Any sequence of whitespace in the middle of the text is
1415 converted to a single space in the stringified result.
1416
1417 @node Concatenation, Undefining, Stringification, Macros
1418 @subsection Concatenation
1419 @cindex concatenation
1420 @cindex @samp{##}
1421 @dfn{Concatenation} means joining two strings into one.  In the context
1422 of macro expansion, concatenation refers to joining two preprocessing
1423 tokens to form one.  In particular, a token of a macro argument can be
1424 concatenated with another argument's token or with fixed text to produce
1425 a longer name.  The longer name might be the name of a function,
1426 variable, type, or a C keyword; it might even be the name of another
1427 macro, in which case it will be expanded.
1428
1429 When you define a function-like or object-like macro, you request
1430 concatenation with the special operator @samp{##} in the macro's
1431 replacement list.  When the macro is called, any arguments are
1432 substituted without performing macro expansion, every @samp{##} operator
1433 is deleted, and the two tokens on either side of it are concatenated to
1434 form a single token.
1435
1436 Consider a C program that interprets named commands.  There probably needs
1437 to be a table of commands, perhaps an array of structures declared as
1438 follows:
1439
1440 @example
1441 struct command
1442 @{
1443   char *name;
1444   void (*function) ();
1445 @};
1446
1447 struct command commands[] =
1448 @{
1449   @{ "quit", quit_command@},
1450   @{ "help", help_command@},
1451   @dots{}
1452 @};
1453 @end example
1454
1455 It would be cleaner not to have to give each command name twice, once in
1456 the string constant and once in the function name.  A macro which takes the
1457 name of a command as an argument can make this unnecessary.  The string
1458 constant can be created with stringification, and the function name by
1459 concatenating the argument with @samp{_command}.  Here is how it is done:
1460
1461 @example
1462 #define COMMAND(NAME)  @{ #NAME, NAME ## _command @}
1463
1464 struct command commands[] =
1465 @{
1466   COMMAND (quit),
1467   COMMAND (help),
1468   @dots{}
1469 @};
1470 @end example
1471
1472 The usual case of concatenation is concatenating two names (or a name
1473 and a number) into a longer name.  This isn't the only valid case.
1474 It is also possible to concatenate two numbers (or a number and a name,
1475 such as @samp{1.5} and @samp{e3}) into a number.  Also, multi-character
1476 operators such as @samp{+=} can be formed by concatenation.  However,
1477 two tokens that don't together form a valid token cannot be
1478 concatenated.  For example, concatenation of @samp{x} on one side and
1479 @samp{+} on the other is not meaningful because those two tokens do not
1480 form a valid preprocessing token when concatenated.  UNDEFINED
1481
1482 Keep in mind that the C preprocessor converts comments to whitespace
1483 before macros are even considered.  Therefore, you cannot create a
1484 comment by concatenating @samp{/} and @samp{*}: the @samp{/*} sequence
1485 that starts a comment is not a token, but rather the beginning of a
1486 comment.  You can freely use comments next to @samp{##} in a macro
1487 definition, or in arguments that will be concatenated, because the
1488 comments will be converted to spaces at first sight, and concatenation
1489 operates on tokens and so ignores whitespace.
1490
1491 @node Undefining, Redefining, Concatenation, Macros
1492 @subsection Undefining Macros
1493
1494 @cindex undefining macros
1495 To @dfn{undefine} a macro means to cancel its definition.  This is done
1496 with the @samp{#undef} directive.  @samp{#undef} is followed by the macro
1497 name to be undefined.
1498
1499 Like definition, undefinition occurs at a specific point in the source
1500 file, and it applies starting from that point.  The name ceases to be a
1501 macro name, and from that point on it is treated by the preprocessor as
1502 if it had never been a macro name.
1503
1504 For example,
1505
1506 @example
1507 #define FOO 4
1508 x = FOO;
1509 #undef FOO
1510 x = FOO;
1511 @end example
1512
1513 @noindent
1514 expands into
1515
1516 @example
1517 x = 4;
1518
1519 x = FOO;
1520 @end example
1521
1522 @noindent
1523 In this example, @samp{FOO} had better be a variable or function as well
1524 as (temporarily) a macro, in order for the result of the expansion to be
1525 valid C code.
1526
1527 The same form of @samp{#undef} directive will cancel definitions with
1528 arguments or definitions that don't expect arguments.  The @samp{#undef}
1529 directive has no effect when used on a name not currently defined as a
1530 macro.
1531
1532 @node Redefining, Poisoning, Undefining, Macros
1533 @subsection Redefining Macros
1534
1535 @cindex redefining macros
1536 @dfn{Redefining} a macro means defining (with @samp{#define}) a name that
1537 is already defined as a macro.
1538
1539 A redefinition is trivial if the new definition is transparently
1540 identical to the old one.  You probably wouldn't deliberately write a
1541 trivial redefinition, but they can happen automatically when a header
1542 file is included more than once (@pxref{Header Files}), so they are
1543 accepted silently and without effect.
1544
1545 Nontrivial redefinition is considered likely to be an error, so it
1546 provokes a warning message from the preprocessor.  However, sometimes it
1547 is useful to change the definition of a macro in mid-compilation.  You
1548 can inhibit the warning by undefining the macro with @samp{#undef}
1549 before the second definition.
1550
1551 In order for a redefinition to be trivial, the parameter names must
1552 match and be in the same order, and the new replacement list must
1553 exactly match the one already in effect, with two possible exceptions:
1554
1555 @itemize @bullet
1556 @item
1557 Whitespace may be added or deleted at the beginning or the end of the
1558 replacement list.  In a sense this is vacuous, since strictly such
1559 whitespace doesn't form part of the macro's expansion.
1560
1561 @item
1562 Between tokens in the expansion, any two forms of whitespace are
1563 considered equivalent.  In particular, whitespace may not be eliminated
1564 entirely, nor may it be added where there previously wasn't any.
1565 @end itemize
1566
1567 Recall that a comment counts as whitespace.
1568
1569 As a particular case of the above, you may not redefine an object-like
1570 macro as a function-like macro, and vice-versa.
1571
1572 @node Poisoning, Macro Pitfalls, Redefining, Macros
1573 @subsection Poisoning Macros
1574 @cindex poisoning macros
1575 @findex #pragma GCC poison
1576
1577 Sometimes, there is an identifier that you want to remove completely
1578 from your program, and make sure that it never creeps back in.  To
1579 enforce this, the @samp{#pragma GCC poison} directive can be used.
1580 @samp{#pragma GCC poison} is followed by a list of identifiers to
1581 poison, and takes effect for the rest of the source.  You cannot
1582 @samp{#undef} a poisoned identifier or test to see if it's defined with
1583 @samp{#ifdef}.
1584
1585 For example,
1586
1587 @example
1588 #pragma GCC poison printf sprintf fprintf
1589 sprintf(some_string, "hello");
1590 @end example
1591
1592 @noindent
1593 will produce an error.
1594
1595 @node Macro Pitfalls,, Poisoning, Macros
1596 @subsection Pitfalls and Subtleties of Macros
1597 @cindex problems with macros
1598 @cindex pitfalls of macros
1599
1600 In this section we describe some special rules that apply to macros and
1601 macro expansion, and point out certain cases in which the rules have
1602 counterintuitive consequences that you must watch out for.
1603
1604 @menu
1605 * Misnesting::        Macros can contain unmatched parentheses.
1606 * Macro Parentheses:: Why apparently superfluous parentheses
1607                          may be necessary to avoid incorrect grouping.
1608 * Swallow Semicolon:: Macros that look like functions
1609                          but expand into compound statements.
1610 * Side Effects::      Unsafe macros that cause trouble when
1611                          arguments contain side effects.
1612 * Self-Reference::    Macros whose definitions use the macros' own names.
1613 * Argument Prescan::  Arguments are checked for macro calls before they
1614                          are substituted.
1615 * Cascaded Macros::   Macros whose definitions use other macros.
1616 * Newlines in Args::  Sometimes line numbers get confused.
1617 @end menu
1618
1619 @node Misnesting, Macro Parentheses, Macro Pitfalls, Macro Pitfalls
1620 @subsubsection Improperly Nested Constructs
1621
1622 Recall that when a macro is called with arguments, the arguments are
1623 substituted into the macro body and the result is checked, together with
1624 the rest of the input file, for more macro calls.
1625
1626 It is possible to piece together a macro call coming partially from the
1627 macro body and partially from the arguments.  For example,
1628
1629 @example
1630 #define double(x) (2*(x))
1631 #define call_with_1(x) x(1)
1632 @end example
1633
1634 @noindent
1635 would expand @samp{call_with_1 (double)} into @samp{(2*(1))}.
1636
1637 Macro definitions do not have to have balanced parentheses.  By writing
1638 an unbalanced open parenthesis in a macro body, it is possible to create
1639 a macro call that begins inside the macro body but ends outside of it.
1640 For example,
1641
1642 @example
1643 #define strange(file) fprintf (file, "%s %d",
1644 @dots{}
1645 strange(stderr) p, 35)
1646 @end example
1647
1648 @noindent
1649 This bizarre example expands to @samp{fprintf (stderr, "%s %d", p, 35)}!
1650
1651 @node Macro Parentheses, Swallow Semicolon, Misnesting, Macro Pitfalls
1652 @subsubsection Unintended Grouping of Arithmetic
1653 @cindex parentheses in macro bodies
1654
1655 You may have noticed that in most of the macro definition examples shown
1656 above, each occurrence of a macro argument name had parentheses around
1657 it.  In addition, another pair of parentheses usually surround the
1658 entire macro definition.  Here is why it is best to write macros that
1659 way.
1660
1661 Suppose you define a macro as follows,
1662
1663 @example
1664 #define ceil_div(x, y) (x + y - 1) / y
1665 @end example
1666
1667 @noindent
1668 whose purpose is to divide, rounding up.  (One use for this operation is
1669 to compute how many @samp{int} objects are needed to hold a certain
1670 number of @samp{char} objects.)  Then suppose it is used as follows:
1671
1672 @example
1673 a = ceil_div (b & c, sizeof (int));
1674 @end example
1675
1676 @noindent
1677 This expands into
1678
1679 @example
1680 a = (b & c + sizeof (int) - 1) / sizeof (int);
1681 @end example
1682
1683 @noindent
1684 which does not do what is intended.  The operator-precedence rules of
1685 C make it equivalent to this:
1686
1687 @example
1688 a = (b & (c + sizeof (int) - 1)) / sizeof (int);
1689 @end example
1690
1691 @noindent
1692 What we want is this:
1693
1694 @example
1695 a = ((b & c) + sizeof (int) - 1)) / sizeof (int);
1696 @end example
1697
1698 @noindent
1699 Defining the macro as
1700
1701 @example
1702 #define ceil_div(x, y) ((x) + (y) - 1) / (y)
1703 @end example
1704
1705 @noindent
1706 provides the desired result.
1707
1708 Unintended grouping can result in another way.  Consider @samp{sizeof
1709 ceil_div(1, 2)}.  That has the appearance of a C expression that would
1710 compute the size of the type of @samp{ceil_div (1, 2)}, but in fact it
1711 means something very different.  Here is what it expands to:
1712
1713 @example
1714 sizeof ((1) + (2) - 1) / (2)
1715 @end example
1716
1717 @noindent
1718 This would take the size of an integer and divide it by two.  The
1719 precedence rules have put the division outside the @samp{sizeof} when it
1720 was intended to be inside.
1721
1722 Parentheses around the entire macro definition can prevent such
1723 problems.  Here, then, is the recommended way to define @samp{ceil_div}:
1724
1725 @example
1726 #define ceil_div(x, y) (((x) + (y) - 1) / (y))
1727 @end example
1728
1729 @node Swallow Semicolon, Side Effects, Macro Parentheses, Macro Pitfalls
1730 @subsubsection Swallowing the Semicolon
1731
1732 @cindex semicolons (after macro calls)
1733 Often it is desirable to define a macro that expands into a compound
1734 statement.  Consider, for example, the following macro, that advances a
1735 pointer (the argument @samp{p} says where to find it) across whitespace
1736 characters:
1737
1738 @example
1739 #define SKIP_SPACES(p, limit)  \
1740 @{ register char *lim = (limit); \
1741   while (p != lim) @{            \
1742     if (*p++ != ' ') @{          \
1743       p--; break; @}@}@}
1744 @end example
1745
1746 @noindent
1747 Here backslash-newline is used to split the macro definition, which must
1748 be a single logical line, so that it resembles the way such C code would
1749 be laid out if not part of a macro definition.
1750
1751 A call to this macro might be @samp{SKIP_SPACES (p, lim)}.  Strictly
1752 speaking, the call expands to a compound statement, which is a complete
1753 statement with no need for a semicolon to end it.  However, since it
1754 looks like a function call, it minimizes confusion if you can use it
1755 like a function call, writing a semicolon afterward, as in
1756 @samp{SKIP_SPACES (p, lim);}
1757
1758 This can cause trouble before @samp{else} statements, because the
1759 semicolon is actually a null statement.  Suppose you write
1760
1761 @example
1762 if (*p != 0)
1763   SKIP_SPACES (p, lim);
1764 else @dots{}
1765 @end example
1766
1767 @noindent
1768 The presence of two statements --- the compound statement and a null
1769 statement --- in between the @samp{if} condition and the @samp{else}
1770 makes invalid C code.
1771
1772 The definition of the macro @samp{SKIP_SPACES} can be altered to solve
1773 this problem, using a @samp{do @dots{} while} statement.  Here is how:
1774
1775 @example
1776 #define SKIP_SPACES(p, limit)     \
1777 do @{ register char *lim = (limit); \
1778      while (p != lim) @{            \
1779        if (*p++ != ' ') @{          \
1780          p--; break; @}@}@}           \
1781 while (0)
1782 @end example
1783
1784 Now @samp{SKIP_SPACES (p, lim);} expands into
1785
1786 @example
1787 do @{@dots{}@} while (0);
1788 @end example
1789
1790 @noindent
1791 which is one statement.
1792
1793 @node Side Effects, Self-Reference, Swallow Semicolon, Macro Pitfalls
1794 @subsubsection Duplication of Side Effects
1795
1796 @cindex side effects (in macro arguments)
1797 @cindex unsafe macros
1798 Many C programs define a macro @samp{min}, for ``minimum'', like this:
1799
1800 @example
1801 #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
1802 @end example
1803
1804 When you use this macro with an argument containing a side effect,
1805 as shown here,
1806
1807 @example
1808 next = min (x + y, foo (z));
1809 @end example
1810
1811 @noindent
1812 it expands as follows:
1813
1814 @example
1815 next = ((x + y) < (foo (z)) ? (x + y) : (foo (z)));
1816 @end example
1817
1818 @noindent
1819 where @samp{x + y} has been substituted for @samp{X} and @samp{foo (z)}
1820 for @samp{Y}.
1821
1822 The function @samp{foo} is used only once in the statement as it appears
1823 in the program, but the expression @samp{foo (z)} has been substituted
1824 twice into the macro expansion.  As a result, @samp{foo} might be called
1825 two times when the statement is executed.  If it has side effects or if
1826 it takes a long time to compute, the results might not be what you
1827 intended.  We say that @samp{min} is an @dfn{unsafe} macro.
1828
1829 The best solution to this problem is to define @samp{min} in a way that
1830 computes the value of @samp{foo (z)} only once.  The C language offers
1831 no standard way to do this, but it can be done with GNU C extensions as
1832 follows:
1833
1834 @example
1835 #define min(X, Y)                     \
1836 (@{ typeof (X) __x = (X), __y = (Y);   \
1837    (__x < __y) ? __x : __y; @})
1838 @end example
1839
1840 If you do not wish to use GNU C extensions, the only solution is to be
1841 careful when @emph{using} the macro @samp{min}.  For example, you can
1842 calculate the value of @samp{foo (z)}, save it in a variable, and use
1843 that variable in @samp{min}:
1844
1845 @example
1846 #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
1847 @dots{}
1848 @{
1849   int tem = foo (z);
1850   next = min (x + y, tem);
1851 @}
1852 @end example
1853
1854 @noindent
1855 (where we assume that @samp{foo} returns type @samp{int}).
1856
1857 @node Self-Reference, Argument Prescan, Side Effects, Macro Pitfalls
1858 @subsubsection Self-Referential Macros
1859
1860 @cindex self-reference
1861 A @dfn{self-referential} macro is one whose name appears in its
1862 definition.  A special feature of ISO Standard C is that the
1863 self-reference is not considered a macro call.  It is passed into the
1864 preprocessor output unchanged.
1865
1866 Let's consider an example:
1867
1868 @example
1869 #define foo (4 + foo)
1870 @end example
1871
1872 @noindent
1873 where @samp{foo} is also a variable in your program.
1874
1875 Following the ordinary rules, each reference to @samp{foo} will expand
1876 into @samp{(4 + foo)}; then this will be rescanned and will expand into
1877 @samp{(4 + (4 + foo))}; and so on until it causes a fatal error (memory
1878 full) in the preprocessor.
1879
1880 However, the special rule about self-reference cuts this process short
1881 after one step, at @samp{(4 + foo)}.  Therefore, this macro definition
1882 has the possibly useful effect of causing the program to add 4 to the
1883 value of @samp{foo} wherever @samp{foo} is referred to.
1884
1885 In most cases, it is a bad idea to take advantage of this feature.  A
1886 person reading the program who sees that @samp{foo} is a variable will
1887 not expect that it is a macro as well.  The reader will come across the
1888 identifier @samp{foo} in the program and think its value should be that
1889 of the variable @samp{foo}, whereas in fact the value is four greater.
1890
1891 The special rule for self-reference applies also to @dfn{indirect}
1892 self-reference.  This is the case where a macro @var{x} expands to use a
1893 macro @samp{y}, and the expansion of @samp{y} refers to the macro
1894 @samp{x}.  The resulting reference to @samp{x} comes indirectly from the
1895 expansion of @samp{x}, so it is a self-reference and is not further
1896 expanded.  Thus, after
1897
1898 @example
1899 #define x (4 + y)
1900 #define y (2 * x)
1901 @end example
1902
1903 @noindent
1904 @samp{x} would expand into @samp{(4 + (2 * x))}.  Clear?
1905
1906 Suppose @samp{y} is used elsewhere, not from the definition of @samp{x}.
1907 Then the use of @samp{x} in the expansion of @samp{y} is not a
1908 self-reference because @samp{x} is not ``in progress''.  So it does
1909 expand.  However, the expansion of @samp{x} contains a reference to
1910 @samp{y}, and that is an indirect self-reference now because @samp{y} is
1911 ``in progress''.  The result is that @samp{y} expands to @samp{(2 * (4 +
1912 y))}.
1913
1914 This behavior is specified by the ISO C standard, so you may need to
1915 understand it.
1916
1917 @node Argument Prescan, Cascaded Macros, Self-Reference, Macro Pitfalls
1918 @subsubsection Separate Expansion of Macro Arguments
1919 @cindex expansion of arguments
1920 @cindex macro argument expansion
1921 @cindex prescan of macro arguments
1922
1923 We have explained that the expansion of a macro, including the substituted
1924 arguments, is re-scanned for macro calls to be expanded.
1925
1926 What really happens is more subtle: first each argument is scanned
1927 separately for macro calls.  Then the resulting tokens are substituted
1928 into the macro body to produce the macro expansion, and the macro
1929 expansion is scanned again for macros to expand.
1930
1931 The result is that the arguments are scanned @emph{twice} to expand
1932 macro calls in them.
1933
1934 Most of the time, this has no effect.  If the argument contained any
1935 macro calls, they are expanded during the first scan.  The result
1936 therefore contains no macro calls, so the second scan does not change
1937 it.  If the argument were substituted as given, with no prescan, the
1938 single remaining scan would find the same macro calls and produce the
1939 same results.
1940
1941 You might expect the double scan to change the results when a
1942 self-referential macro is used in an argument of another macro
1943 (@pxref{Self-Reference}): the self-referential macro would be expanded
1944 once in the first scan, and a second time in the second scan.  However,
1945 this is not what happens.  The self-references that do not expand in the
1946 first scan are marked so that they will not expand in the second scan
1947 either.
1948
1949 The prescan is not done when an argument is stringified or concatenated.
1950 Thus,
1951
1952 @example
1953 #define str(s) #s
1954 #define foo 4
1955 str (foo)
1956 @end example
1957
1958 @noindent
1959 expands to @samp{"foo"}.  Once more, prescan has been prevented from
1960 having any noticeable effect.
1961
1962 More precisely, stringification and concatenation use the argument
1963 tokens as given without initially scanning for macros.  The same
1964 argument would be used in expanded form if it is substituted elsewhere
1965 without stringification or concatenation.
1966
1967 @example
1968 #define str(s) #s lose(s)
1969 #define foo 4
1970 str (foo)
1971 @end example
1972
1973 expands to @samp{"foo" lose(4)}.
1974
1975 You might now ask, ``Why mention the prescan, if it makes no difference?
1976 And why not skip it and make the preprocessor faster?''  The answer is
1977 that the prescan does make a difference in three special cases:
1978
1979 @itemize @bullet
1980 @item
1981 Nested calls to a macro.
1982
1983 @item
1984 Macros that call other macros that stringify or concatenate.
1985
1986 @item
1987 Macros whose expansions contain unshielded commas.
1988 @end itemize
1989
1990 We say that @dfn{nested} calls to a macro occur when a macro's argument
1991 contains a call to that very macro.  For example, if @samp{f} is a macro
1992 that expects one argument, @samp{f (f (1))} is a nested pair of calls to
1993 @samp{f}.  The desired expansion is made by expanding @samp{f (1)} and
1994 substituting that into the definition of @samp{f}.  The prescan causes
1995 the expected result to happen.  Without the prescan, @samp{f (1)} itself
1996 would be substituted as an argument, and the inner use of @samp{f} would
1997 appear during the main scan as an indirect self-reference and would not
1998 be expanded.  Here, the prescan cancels an undesirable side effect (in
1999 the medical, not computational, sense of the term) of the special rule
2000 for self-referential macros.
2001
2002 Prescan causes trouble in certain other cases of nested macro calls.
2003 Here is an example:
2004
2005 @example
2006 #define foo  a,b
2007 #define bar(x) lose(x)
2008 #define lose(x) (1 + (x))
2009
2010 bar(foo)
2011 @end example
2012
2013 @noindent
2014 We would like @samp{bar(foo)} to turn into @samp{(1 + (foo))}, which
2015 would then turn into @samp{(1 + (a,b))}.  Instead, @samp{bar(foo)}
2016 expands into @samp{lose(a,b)}, and you get an error because @code{lose}
2017 requires a single argument.  In this case, the problem is easily solved
2018 by the same parentheses that ought to be used to prevent misnesting of
2019 arithmetic operations:
2020
2021 @example
2022 #define foo (a,b)
2023 #define bar(x) lose((x))
2024 @end example
2025
2026 The problem is more serious when the operands of the macro are not
2027 expressions; for example, when they are statements.  Then parentheses
2028 are unacceptable because they would make for invalid C code:
2029
2030 @example
2031 #define foo @{ int a, b; @dots{} @}
2032 @end example
2033
2034 @noindent
2035 In GNU C you can shield the commas using the @samp{(@{@dots{}@})}
2036 construct which turns a compound statement into an expression:
2037
2038 @example
2039 #define foo (@{ int a, b; @dots{} @})
2040 @end example
2041
2042 Or you can rewrite the macro definition to avoid such commas:
2043
2044 @example
2045 #define foo @{ int a; int b; @dots{} @}
2046 @end example
2047
2048 There is also one case where prescan is useful.  It is possible to use
2049 prescan to expand an argument and then stringify it --- if you use two
2050 levels of macros.  Let's add a new macro @samp{xstr} to the example
2051 shown above:
2052
2053 @example
2054 #define xstr(s) str(s)
2055 #define str(s) #s
2056 #define foo 4
2057 xstr (foo)
2058 @end example
2059
2060 This expands into @samp{"4"}, not @samp{"foo"}.  The reason for the
2061 difference is that the argument of @samp{xstr} is expanded at prescan
2062 (because @samp{xstr} does not specify stringification or concatenation
2063 of the argument).  The result of prescan then forms the argument for
2064 @samp{str}.  @samp{str} uses its argument without prescan because it
2065 performs stringification; but it cannot prevent or undo the prescanning
2066 already done by @samp{xstr}.
2067
2068 @node Cascaded Macros, Newlines in Args, Argument Prescan, Macro Pitfalls
2069 @subsubsection Cascaded Use of Macros
2070
2071 @cindex cascaded macros
2072 @cindex macro body uses macro
2073 A @dfn{cascade} of macros is when one macro's body contains a reference
2074 to another macro.  This is very common practice.  For example,
2075
2076 @example
2077 #define BUFSIZE 1020
2078 #define TABLESIZE BUFSIZE
2079 @end example
2080
2081 This is not at all the same as defining @samp{TABLESIZE} to be
2082 @samp{1020}.  The @samp{#define} for @samp{TABLESIZE} uses exactly the
2083 body you specify --- in this case, @samp{BUFSIZE} --- and does not check
2084 to see whether it too is the name of a macro.
2085
2086 It's only when you @emph{use} @samp{TABLESIZE} that the result of its
2087 expansion is checked for more macro names.
2088
2089 This makes a difference if you change the definition of @samp{BUFSIZE}
2090 at some point in the source file.  @samp{TABLESIZE}, defined as shown,
2091 will always expand using the definition of @samp{BUFSIZE} that is
2092 currently in effect:
2093
2094 @example
2095 #define BUFSIZE 1020
2096 #define TABLESIZE BUFSIZE
2097 #undef BUFSIZE
2098 #define BUFSIZE 37
2099 @end example
2100
2101 @noindent
2102 Now @samp{TABLESIZE} expands (in two stages) to @samp{37}.  (The
2103 @samp{#undef} is to prevent any warning about the nontrivial
2104 redefinition of @code{BUFSIZE}.)
2105
2106 @node Newlines in Args,, Cascaded Macros, Macro Pitfalls
2107 @subsection Newlines in Macro Arguments
2108 @cindex newlines in macro arguments
2109
2110 The invocation of a function-like macro can extend over many logical
2111 lines.  The ISO C standard requires that newlines within a macro
2112 invocation be treated as ordinary whitespace.  This means that when the
2113 expansion of a function-like macro replaces its invocation, it appears
2114 on the same line as the macro name did.  Thus line numbers emitted by
2115 the compiler or debugger refer to the line the invocation started on,
2116 which might be different to the line containing the argument causing the
2117 problem.
2118
2119 Here is an example illustrating this:
2120
2121 @example
2122 #define ignore_second_arg(a,b,c) a; c
2123
2124 ignore_second_arg (foo (),
2125                    ignored (),
2126                    syntax error);
2127 @end example
2128
2129 @noindent
2130 The syntax error triggered by the tokens @samp{syntax error} results in
2131 an error message citing line three --- the line of ignore_second_arg ---
2132 even though the problematic code comes from line five.
2133
2134 @node Conditionals, Assertions, Macros, Top
2135 @section Conditionals
2136
2137 @cindex conditionals
2138 In a macro processor, a @dfn{conditional} is a directive that allows a
2139 part of the program to be ignored during compilation, on some
2140 conditions.  In the C preprocessor, a conditional can test either an
2141 arithmetic expression or whether a name is defined as a macro.
2142
2143 A conditional in the C preprocessor resembles in some ways an @samp{if}
2144 statement in C, but it is important to understand the difference between
2145 them.  The condition in an @samp{if} statement is tested during the
2146 execution of your program.  Its purpose is to allow your program to
2147 behave differently from run to run, depending on the data it is
2148 operating on.  The condition in a preprocessing conditional directive is
2149 tested when your program is compiled.  Its purpose is to allow different
2150 code to be included in the program depending on the situation at the
2151 time of compilation.
2152
2153 @menu
2154 * Uses: Conditional Uses.       What conditionals are for.
2155 * Syntax: Conditional Syntax.   How conditionals are written.
2156 * Deletion: Deleted Code.       Making code into a comment.
2157 * Macros: Conditionals-Macros.  Why conditionals are used with macros.
2158 * Errors: #error Directive.     Detecting inconsistent compilation parameters.
2159 @end menu
2160
2161 @node Conditional Uses
2162 @subsection Why Conditionals are Used
2163
2164 Generally there are three kinds of reason to use a conditional.
2165
2166 @itemize @bullet
2167 @item
2168 A program may need to use different code depending on the machine or
2169 operating system it is to run on.  In some cases the code for one
2170 operating system may be erroneous on another operating system; for
2171 example, it might refer to library routines that do not exist on the
2172 other system.  When this happens, it is not enough to avoid executing
2173 the invalid code: merely having it in the program makes it impossible to
2174 link the program and run it.  With a preprocessing conditional, the
2175 offending code can be effectively excised from the program when it is
2176 not valid.
2177
2178 @item
2179 You may want to be able to compile the same source file into two
2180 different programs.  Sometimes the difference between the programs is
2181 that one makes frequent time-consuming consistency checks on its
2182 intermediate data, or prints the values of those data for debugging,
2183 while the other does not.
2184
2185 @item
2186 A conditional whose condition is always false is a good way to exclude
2187 code from the program but keep it as a sort of comment for future
2188 reference.
2189 @end itemize
2190
2191 Most simple programs that are intended to run on only one machine will
2192 not need to use preprocessing conditionals.
2193
2194 @node Conditional Syntax
2195 @subsection Syntax of Conditionals
2196
2197 @findex #if
2198 A conditional in the C preprocessor begins with a @dfn{conditional
2199 directive}: @samp{#if}, @samp{#ifdef} or @samp{#ifndef}.
2200 @xref{Conditionals-Macros}, for information on @samp{#ifdef} and
2201 @samp{#ifndef}; only @samp{#if} is explained here.
2202
2203 @menu
2204 * If: #if Directive.     Basic conditionals using @samp{#if} and @samp{#endif}.
2205 * Else: #else Directive. Including some text if the condition fails.
2206 * Elif: #elif Directive. Testing several alternative possibilities.
2207 @end menu
2208
2209 @node #if Directive
2210 @subsubsection The @samp{#if} Directive
2211
2212 The @samp{#if} directive in its simplest form consists of
2213
2214 @example
2215 #if @var{expression}
2216 @var{controlled text}
2217 #endif /* @var{expression} */
2218 @end example
2219
2220 The comment following the @samp{#endif} is not required, but it is a
2221 good practice because it helps people match the @samp{#endif} to the
2222 corresponding @samp{#if}.  Such comments should always be used, except
2223 in short conditionals that are not nested.  In fact, you can put
2224 anything at all after the @samp{#endif} and it will be ignored by the
2225 GNU C preprocessor, but only comments are acceptable in ISO Standard C@.
2226
2227 @var{expression} is a C expression of integer type, subject to stringent
2228 restrictions.  It may contain
2229
2230 @itemize @bullet
2231 @item
2232 Integer constants, which are all regarded as @code{long} or
2233 @code{unsigned long}.
2234
2235 @item
2236 Character constants, which are interpreted according to the character
2237 set and conventions of the machine and operating system on which the
2238 preprocessor is running.  The GNU C preprocessor uses the C data type
2239 @samp{char} for these character constants; therefore, whether some
2240 character codes are negative is determined by the C compiler used to
2241 compile the preprocessor.  If it treats @samp{char} as signed, then
2242 character codes large enough to set the sign bit will be considered
2243 negative; otherwise, no character code is considered negative.
2244
2245 @item
2246 Arithmetic operators for addition, subtraction, multiplication,
2247 division, bitwise operations, shifts, comparisons, and logical
2248 operations (@samp{&&} and @samp{||}).  The latter two obey the usual
2249 short-circuiting rules of standard C.
2250
2251 @item
2252 Identifiers that are not macros, which are all treated as zero(!).
2253
2254 @item
2255 Macro calls.  All macro calls in the expression are expanded before
2256 actual computation of the expression's value begins.
2257 @end itemize
2258
2259 Note that @samp{sizeof} operators and @code{enum}-type values are not
2260 allowed.  @code{enum}-type values, like all other identifiers that are
2261 not taken as macro calls and expanded, are treated as zero.
2262
2263 The @var{controlled text} inside of a conditional can include
2264 preprocessing directives.  Then the directives inside the conditional
2265 are obeyed only if that branch of the conditional succeeds.  The text
2266 can also contain other conditional groups.  However, the @samp{#if} and
2267 @samp{#endif} directives must balance.
2268
2269 @node #else Directive
2270 @subsubsection The @samp{#else} Directive
2271
2272 @findex #else
2273 The @samp{#else} directive can be added to a conditional to provide
2274 alternative text to be used if the condition is false.  This is what
2275 it looks like:
2276
2277 @example
2278 #if @var{expression}
2279 @var{text-if-true}
2280 #else /* Not @var{expression} */
2281 @var{text-if-false}
2282 #endif /* Not @var{expression} */
2283 @end example
2284
2285 If @var{expression} is nonzero, and thus the @var{text-if-true} is 
2286 active, then @samp{#else} acts like a failing conditional and the
2287 @var{text-if-false} is ignored.  Conversely, if the @samp{#if}
2288 conditional fails, the @var{text-if-false} is considered included.
2289
2290 @node #elif Directive
2291 @subsubsection The @samp{#elif} Directive
2292
2293 @findex #elif
2294 One common case of nested conditionals is used to check for more than two
2295 possible alternatives.  For example, you might have
2296
2297 @example
2298 #if X == 1
2299 @dots{}
2300 #else /* X != 1 */
2301 #if X == 2
2302 @dots{}
2303 #else /* X != 2 */
2304 @dots{}
2305 #endif /* X != 2 */
2306 #endif /* X != 1 */
2307 @end example
2308
2309 Another conditional directive, @samp{#elif}, allows this to be
2310 abbreviated as follows:
2311
2312 @example
2313 #if X == 1
2314 @dots{}
2315 #elif X == 2
2316 @dots{}
2317 #else /* X != 2 and X != 1*/
2318 @dots{}
2319 #endif /* X != 2 and X != 1*/
2320 @end example
2321
2322 @samp{#elif} stands for ``else if''.  Like @samp{#else}, it goes in the
2323 middle of a @samp{#if}-@samp{#endif} pair and subdivides it; it does not
2324 require a matching @samp{#endif} of its own.  Like @samp{#if}, the
2325 @samp{#elif} directive includes an expression to be tested.
2326
2327 The text following the @samp{#elif} is processed only if the original
2328 @samp{#if}-condition failed and the @samp{#elif} condition succeeds.
2329 More than one @samp{#elif} can go in the same @samp{#if}-@samp{#endif}
2330 group.  Then the text after each @samp{#elif} is processed only if the
2331 @samp{#elif} condition succeeds after the original @samp{#if} and any
2332 previous @samp{#elif} directives within it have failed.  @samp{#else} is
2333 equivalent to @samp{#elif 1}, and @samp{#else} is allowed after any
2334 number of @samp{#elif} directives, but @samp{#elif} may not follow
2335 @samp{#else}.
2336
2337 @node Deleted Code
2338 @subsection Keeping Deleted Code for Future Reference
2339 @cindex commenting out code
2340
2341 If you replace or delete a part of the program but want to keep the old
2342 code around as a comment for future reference, the easy way to do this
2343 is to put @samp{#if 0} before it and @samp{#endif} after it.  This is
2344 better than using comment delimiters @samp{/*} and @samp{*/} since those
2345 won't work if the code already contains comments (C comments do not
2346 nest).
2347
2348 This works even if the code being turned off contains conditionals, but
2349 they must be entire conditionals (balanced @samp{#if} and @samp{#endif}).
2350
2351 Conversely, do not use @samp{#if 0} for comments which are not C code.
2352 Use the comment delimiters @samp{/*} and @samp{*/} instead.  The
2353 interior of @samp{#if 0} must consist of complete tokens; in particular,
2354 single-quote characters must balance.  Comments often contain unbalanced
2355 single-quote characters (known in English as apostrophes).  These
2356 confuse @samp{#if 0}.  They do not confuse @samp{/*}.
2357
2358 @node Conditionals-Macros
2359 @subsection Conditionals and Macros
2360
2361 Conditionals are useful in connection with macros or assertions, because
2362 those are the only ways that an expression's value can vary from one
2363 compilation to another.  A @samp{#if} directive whose expression uses no
2364 macros or assertions is equivalent to @samp{#if 1} or @samp{#if 0}; you
2365 might as well determine which one, by computing the value of the
2366 expression yourself, and then simplify the program.
2367
2368 For example, here is a conditional that tests the expression
2369 @samp{BUFSIZE == 1020}, where @samp{BUFSIZE} must be a macro.
2370
2371 @example
2372 #if BUFSIZE == 1020
2373   printf ("Large buffers!\n");
2374 #endif /* BUFSIZE is large */
2375 @end example
2376
2377 (Programmers often wish they could test the size of a variable or data
2378 type in @samp{#if}, but this does not work.  The preprocessor does not
2379 understand @code{sizeof}, or typedef names, or even the type keywords
2380 such as @code{int}.)
2381
2382 @findex defined
2383 The special operator @samp{defined} is used in @samp{#if} and
2384 @samp{#elif} expressions to test whether a certain name is defined as a
2385 macro.  Either @samp{defined @var{name}} or @samp{defined (@var{name})}
2386 is an expression whose value is 1 if @var{name} is defined as macro at
2387 the current point in the program, and 0 otherwise.  To the
2388 @samp{defined} operator it makes no difference what the definition of
2389 the macro is; all that matters is whether there is a definition.  Thus,
2390 for example,@refill
2391
2392 @example
2393 #if defined (vax) || defined (ns16000)
2394 @end example
2395
2396 @noindent
2397 would succeed if either of the names @samp{vax} and @samp{ns16000} is
2398 defined as a macro.  You can test the same condition using assertions
2399 (@pxref{Assertions}), like this:
2400
2401 @example
2402 #if #cpu (vax) || #cpu (ns16000)
2403 @end example
2404
2405 If a macro is defined and later undefined with @samp{#undef}, subsequent
2406 use of the @samp{defined} operator returns 0, because the name is no
2407 longer defined.  If the macro is defined again with another
2408 @samp{#define}, @samp{defined} will recommence returning 1.
2409
2410 If the @samp{defined} operator appears as a result of a macro expansion,
2411 the C standard says the behavior is undefined.  GNU cpp treats it as a
2412 genuine @samp{defined} operator and evaluates it normally.  It will warn
2413 wherever your code uses this feature if you use the command-line option
2414 @samp{-pedantic}, since other compilers may handle it differently.
2415
2416 @findex #ifdef
2417 @findex #ifndef
2418 Conditionals that test whether a single macro is defined are very common,
2419 so there are two special short conditional directives for this case.
2420
2421 @table @code
2422 @item #ifdef @var{name}
2423 is equivalent to @samp{#if defined (@var{name})}.
2424
2425 @item #ifndef @var{name}
2426 is equivalent to @samp{#if ! defined (@var{name})}.
2427 @end table
2428
2429 Macro definitions can vary between compilations for several reasons.
2430
2431 @itemize @bullet
2432 @item
2433 Some macros are predefined on each kind of machine.  For example, on a
2434 Vax, the name @samp{vax} is a predefined macro.  On other machines, it
2435 would not be defined.
2436
2437 @item
2438 Many more macros are defined by system header files.  Different systems
2439 and machines define different macros, or give them different values.  It
2440 is useful to test these macros with conditionals to avoid using a system
2441 feature on a machine where it is not implemented.
2442
2443 @item
2444 Macros are a common way of allowing users to customize a program for
2445 different machines or applications.  For example, the macro
2446 @samp{BUFSIZE} might be defined in a configuration file for your program
2447 that is included as a header file in each source file.  You would use
2448 @samp{BUFSIZE} in a preprocessing conditional in order to generate
2449 different code depending on the chosen configuration.
2450
2451 @item
2452 Macros can be defined or undefined with @samp{-D} and @samp{-U} command
2453 options when you compile the program.  You can arrange to compile the
2454 same source file into two different programs by choosing a macro name to
2455 specify which program you want, writing conditionals to test whether or
2456 how this macro is defined, and then controlling the state of the macro
2457 with compiler command options.  @xref{Invocation}.
2458 @end itemize
2459
2460 @ifinfo
2461 Assertions are usually predefined, but can be defined with preprocessor
2462 directives or command-line options.
2463 @end ifinfo
2464
2465 @node #error Directive
2466 @subsection The @samp{#error} and @samp{#warning} Directives
2467
2468 @findex #error
2469 The directive @samp{#error} causes the preprocessor to report a fatal
2470 error.  The tokens forming the rest of the line following @samp{#error}
2471 are used as the error message, and not macro-expanded.  Internal
2472 whitespace sequences are each replaced with a single space.  The line
2473 must consist of complete tokens.
2474
2475 You would use @samp{#error} inside of a conditional that detects a
2476 combination of parameters which you know the program does not properly
2477 support.  For example, if you know that the program will not run
2478 properly on a Vax, you might write
2479
2480 @smallexample
2481 @group
2482 #ifdef __vax__
2483 #error "Won't work on Vaxen.  See comments at get_last_object."
2484 #endif
2485 @end group
2486 @end smallexample
2487
2488 @noindent
2489 @xref{Nonstandard Predefined}, for why this works.
2490
2491 If you have several configuration parameters that must be set up by
2492 the installation in a consistent way, you can use conditionals to detect
2493 an inconsistency and report it with @samp{#error}.  For example,
2494
2495 @smallexample
2496 #if HASH_TABLE_SIZE % 2 == 0 || HASH_TABLE_SIZE % 3 == 0 \
2497     || HASH_TABLE_SIZE % 5 == 0
2498 #error HASH_TABLE_SIZE should not be divisible by a small prime
2499 #endif
2500 @end smallexample
2501
2502 @findex #warning
2503 The directive @samp{#warning} is like the directive @samp{#error}, but
2504 causes the preprocessor to issue a warning and continue preprocessing.
2505 The tokens following @samp{#warning} are used as the warning message,
2506 and not macro-expanded.
2507
2508 You might use @samp{#warning} in obsolete header files, with a message
2509 directing the user to the header file which should be used instead.
2510
2511 @node Assertions, Line Control, Conditionals, Top
2512 @section Assertions
2513 @cindex assertions
2514 @dfn{Assertions} are a more systematic alternative to macros in writing
2515 conditionals to test what sort of computer or system the compiled
2516 program will run on.  Assertions are usually predefined, but you can
2517 define them with preprocessing directives or command-line options.
2518
2519 @cindex predicates
2520 The macros traditionally used to describe the type of target are not
2521 classified in any way according to which question they answer; they may
2522 indicate a hardware architecture, a particular hardware model, an
2523 operating system, a particular version of an operating system, or
2524 specific configuration options.  These are jumbled together in a single
2525 namespace.  In contrast, each assertion consists of a named question and
2526 an answer.  The question is usually called the @dfn{predicate}.  An
2527 assertion looks like this:
2528
2529 @example
2530 #@var{predicate} (@var{answer})
2531 @end example
2532
2533 @noindent
2534 You must use a properly formed identifier for @var{predicate}.  The
2535 value of @var{answer} can be any sequence of words; all characters are
2536 significant except for leading and trailing whitespace, and differences
2537 in internal whitespace sequences are ignored.  (This is similar to the
2538 rules governing macro redefinition.)  Thus, @samp{x + y} is different
2539 from @samp{x+y} but equivalent to @samp{ x + y }.  @samp{)} is not
2540 allowed in an answer.
2541
2542 @cindex testing predicates
2543 Here is a conditional to test whether the answer @var{answer} is asserted
2544 for the predicate @var{predicate}:
2545
2546 @example
2547 #if #@var{predicate} (@var{answer})
2548 @end example
2549
2550 @noindent
2551 There may be more than one answer asserted for a given predicate.  If
2552 you omit the answer, you can test whether @emph{any} answer is asserted
2553 for @var{predicate}:
2554
2555 @example
2556 #if #@var{predicate}
2557 @end example
2558
2559 @findex #system
2560 @findex #machine
2561 @findex #cpu
2562 Most of the time, the assertions you test will be predefined assertions.
2563 GNU C provides three predefined predicates: @code{system}, @code{cpu},
2564 and @code{machine}.  @code{system} is for assertions about the type of
2565 software, @code{cpu} describes the type of computer architecture, and
2566 @code{machine} gives more information about the computer.  For example,
2567 on a GNU system, the following assertions would be true:
2568
2569 @example
2570 #system (gnu)
2571 #system (mach)
2572 #system (mach 3)
2573 #system (mach 3.@var{subversion})
2574 #system (hurd)
2575 #system (hurd @var{version})
2576 @end example
2577
2578 @noindent
2579 and perhaps others.  The alternatives with
2580 more or less version information let you ask more or less detailed
2581 questions about the type of system software.
2582
2583 On a Unix system, you would find @code{#system (unix)} and perhaps one of:
2584 @code{#system (aix)}, @code{#system (bsd)}, @code{#system (hpux)},
2585 @code{#system (lynx)}, @code{#system (mach)}, @code{#system (posix)},
2586 @code{#system (svr3)}, @code{#system (svr4)}, or @code{#system (xpg4)}
2587 with possible version numbers following.
2588
2589 Other values for @code{system} are @code{#system (mvs)}
2590 and @code{#system (vms)}.
2591
2592 @strong{Portability note:} Many Unix C compilers provide only one answer
2593 for the @code{system} assertion: @code{#system (unix)}, if they support
2594 assertions at all.  This is less than useful.
2595
2596 An assertion with a multi-word answer is completely different from several
2597 assertions with individual single-word answers.  For example, the presence
2598 of @code{system (mach 3.0)} does not mean that @code{system (3.0)} is true.
2599 It also does not directly imply @code{system (mach)}, but in GNU C, that
2600 last will normally be asserted as well.
2601
2602 The current list of possible assertion values for @code{cpu} is:
2603 @code{#cpu (a29k)}, @code{#cpu (alpha)}, @code{#cpu (arm)}, @code{#cpu
2604 (clipper)}, @code{#cpu (convex)}, @code{#cpu (elxsi)}, @code{#cpu
2605 (tron)}, @code{#cpu (h8300)}, @code{#cpu (i370)}, @code{#cpu (i386)},
2606 @code{#cpu (i860)}, @code{#cpu (i960)}, @code{#cpu (m68k)}, @code{#cpu
2607 (m88k)}, @code{#cpu (mips)}, @code{#cpu (ns32k)}, @code{#cpu (hppa)},
2608 @code{#cpu (pyr)}, @code{#cpu (ibm032)}, @code{#cpu (rs6000)},
2609 @code{#cpu (sh)}, @code{#cpu (sparc)}, @code{#cpu (spur)}, @code{#cpu
2610 (tahoe)}, @code{#cpu (vax)}, @code{#cpu (we32000)}.
2611
2612 @findex #assert
2613 You can create assertions within a C program using @samp{#assert}, like
2614 this:
2615
2616 @example
2617 #assert @var{predicate} (@var{answer})
2618 @end example
2619
2620 @noindent
2621 (Note the absence of a @samp{#} before @var{predicate}.)
2622
2623 @cindex unassert
2624 @cindex assertions, undoing
2625 @cindex retracting assertions
2626 @findex #unassert
2627 Each time you do this, you assert a new true answer for @var{predicate}.
2628 Asserting one answer does not invalidate previously asserted answers;
2629 they all remain true.  The only way to remove an answer is with
2630 @samp{#unassert}.  @samp{#unassert} has the same syntax as
2631 @samp{#assert}.  You can also remove all answers to a @var{predicate}
2632 like this:
2633
2634 @example
2635 #unassert @var{predicate}
2636 @end example
2637
2638 You can also add or cancel assertions using command options
2639 when you run @code{gcc} or @code{cpp}.  @xref{Invocation}.
2640
2641 @node Line Control, Other Directives, Assertions, Top
2642 @section Combining Source Files
2643
2644 @cindex line control
2645 One of the jobs of the C preprocessor is to inform the C compiler of where
2646 each line of C code came from: which source file and which line number.
2647
2648 C code can come from multiple source files if you use @samp{#include};
2649 both @samp{#include} and the use of conditionals and macros can cause
2650 the line number of a line in the preprocessor output to be different
2651 from the line's number in the original source file.  You will appreciate
2652 the value of making both the C compiler (in error messages) and symbolic
2653 debuggers such as GDB use the line numbers in your source file.
2654
2655 The C preprocessor builds on this feature by offering a directive by
2656 which you can control the feature explicitly.  This is useful when a
2657 file for input to the C preprocessor is the output from another program
2658 such as the @code{bison} parser generator, which operates on another
2659 file that is the true source file.  Parts of the output from
2660 @code{bison} are generated from scratch, other parts come from a
2661 standard parser file.  The rest are copied nearly verbatim from the
2662 source file, but their line numbers in the @code{bison} output are not
2663 the same as their original line numbers.  Naturally you would like
2664 compiler error messages and symbolic debuggers to know the original
2665 source file and line number of each line in the @code{bison} input.
2666
2667 @findex #line
2668 @code{bison} arranges this by writing @samp{#line} directives into the output
2669 file.  @samp{#line} is a directive that specifies the original line number
2670 and source file name for subsequent input in the current preprocessor input
2671 file.  @samp{#line} has three variants:
2672
2673 @table @code
2674 @item #line @var{linenum}
2675 Here @var{linenum} is a decimal integer constant.  This specifies that
2676 the line number of the following line of input, in its original source file,
2677 was @var{linenum}.
2678
2679 @item #line @var{linenum} @var{filename}
2680 Here @var{linenum} is a decimal integer constant and @var{filename} is a
2681 string constant.  This specifies that the following line of input came
2682 originally from source file @var{filename} and its line number there was
2683 @var{linenum}.  Keep in mind that @var{filename} is not just a file
2684 name; it is surrounded by double-quote characters so that it looks like
2685 a string constant.
2686
2687 @item #line @var{anything else}
2688 @var{anything else} is checked for macro calls, which are expanded.
2689 The result should be a decimal integer constant followed optionally
2690 by a string constant, as described above.
2691 @end table
2692
2693 @samp{#line} directives alter the results of the @samp{__FILE__} and
2694 @samp{__LINE__} predefined macros from that point on.  @xref{Standard
2695 Predefined}.
2696
2697 The output of the preprocessor (which is the input for the rest of the
2698 compiler) contains directives that look much like @samp{#line}
2699 directives.  They start with just @samp{#} instead of @samp{#line}, but
2700 this is followed by a line number and file name as in @samp{#line}.
2701 @xref{Output}.
2702
2703 @node Other Directives, Output, Line Control, Top
2704 @section Miscellaneous Preprocessing Directives
2705
2706 This section describes some additional, rarely used, preprocessing
2707 directives.
2708
2709 @findex #pragma
2710 @findex #pragma GCC
2711
2712 The ISO standard specifies that the effect of the @samp{#pragma}
2713 directive is implementation-defined.  The GNU C preprocessor recognizes
2714 some pragmas, and passes unrecognized ones through to the preprocessor
2715 output, so they are available to the compilation pass.
2716
2717 In line with the C99 standard, which introduces a STDC namespace for C99
2718 pragmas, the preprocessor introduces a GCC namespace for GCC pragmas.
2719 Supported GCC preprocessor pragmas are of the form @samp{#pragma GCC
2720 ...}.  For backwards compatibility previously supported pragmas are also
2721 recognized without the @samp{GCC} prefix, however that use is
2722 deprecated.  Pragmas that are already deprecated are not recognized with
2723 a @samp{GCC} prefix.
2724
2725 @findex #pragma GCC dependency
2726 The @samp{#pragma GCC dependency} allows you to check the relative dates
2727 of the current file and another file. If the other file is more recent
2728 than the current file, a warning is issued. This is useful if the
2729 include file is derived from the other file, and should be regenerated.
2730 The other file is searched for using the normal include search path.
2731 Optional trailing text can be used to give more information in the
2732 warning message.
2733
2734 @smallexample
2735 #pragma GCC dependency "parse.y"
2736 #pragma GCC dependency "/usr/include/time.h" rerun /path/to/fixincludes
2737 @end smallexample
2738
2739 @findex _Pragma
2740 The C99 standard also introduces the @samp{_Pragma} operator.  The
2741 syntax is @code{_Pragma (string-literal)}, where @samp{string-literal}
2742 can be either a normal or wide-character string literal.  It is
2743 destringized, by replacing all @samp{\\} with a single @samp{\} and all
2744 @samp{\"} with a @samp{"}.  The result is then processed as if it had
2745 appeared as the right hand side of a @samp{#pragma} directive.  For
2746 example,
2747
2748 @smallexample
2749 _Pragma ("GCC dependency \"parse.y\"")
2750 @end smallexample
2751
2752 @noindent has the same effect as @samp{#pragma GCC dependency
2753 "parse.y"}.  The same effect could be achieved using macros, for example
2754
2755 @smallexample
2756 #define DO_PRAGMA(x) _Pragma (#x)
2757 DO_PRAGMA (GCC dependency "parse.y")
2758 @end smallexample
2759
2760 The standard is unclear on where a @samp{_Pragma} operator can appear.
2761 The preprocessor accepts it even within a preprocessing conditional
2762 directive like @samp{#if}.  To be safe, you are probably best keeping it
2763 out of directives other than @samp{#define}, and putting it on a line of
2764 its own.
2765
2766 @findex #ident
2767 The @samp{#ident} directive is supported for compatibility with certain
2768 other systems.  It is followed by a line of text.  On some systems, the
2769 text is copied into a special place in the object file; on most systems,
2770 the text is ignored and this directive has no effect.  Typically
2771 @samp{#ident} is only used in header files supplied with those systems
2772 where it is meaningful.
2773
2774 @cindex null directive
2775 The @dfn{null directive} consists of a @samp{#} followed by a newline,
2776 with only whitespace (including comments) in between.  A null directive
2777 is understood as a preprocessing directive but has no effect on the
2778 preprocessor output.  The primary significance of the existence of the
2779 null directive is that an input line consisting of just a @samp{#} will
2780 produce no output, rather than a line of output containing just a
2781 @samp{#}.  Supposedly some old C programs contain such lines.
2782
2783 @node Output, Implementation, Other Directives, Top
2784 @section C Preprocessor Output
2785
2786 @cindex output format
2787 The output from the C preprocessor looks much like the input, except
2788 that all preprocessing directive lines have been replaced with blank
2789 lines and all comments with spaces.
2790
2791 The ISO standard specifies that it is implementation defined whether a
2792 preprocessor preserves whitespace between tokens, or replaces it with
2793 e.g. a single space.  In the GNU C preprocessor, whitespace between
2794 tokens is collapsed to become a single space, with the exception that
2795 the first token on a non-directive line is preceded with sufficient
2796 spaces that it appears in the same column in the preprocessed output
2797 that it appeared in in the original source file.  This is so the output
2798 is easy to read.  @xref{Unreliable Features}.
2799
2800 Source file name and line number information is conveyed by lines
2801 of the form
2802
2803 @example
2804 # @var{linenum} @var{filename} @var{flags}
2805 @end example
2806
2807 @noindent
2808 which are inserted as needed into the output (but never within a string
2809 or character constant), and in place of long sequences of empty lines.
2810 Such a line means that the following line originated in file
2811 @var{filename} at line @var{linenum}.
2812
2813 After the file name comes zero or more flags, which are @samp{1},
2814 @samp{2}, @samp{3}, or @samp{4}.  If there are multiple flags, spaces
2815 separate them.  Here is what the flags mean:
2816
2817 @table @samp
2818 @item 1
2819 This indicates the start of a new file.
2820 @item 2
2821 This indicates returning to a file (after having included another file).
2822 @item 3
2823 This indicates that the following text comes from a system header file,
2824 so certain warnings should be suppressed.
2825 @item 4
2826 This indicates that the following text should be treated as C@.
2827 @c maybe cross reference NO_IMPLICIT_EXTERN_C
2828 @end table
2829
2830 @node Implementation, Unreliable Features, Output, Top
2831 @section Implementation-defined Behavior and Implementation Limits
2832 @cindex implementation limits
2833 @cindex implementation-defined behavior
2834
2835 The ISO C standard mandates that implementations document various
2836 aspects of preprocessor behavior.  You should try to avoid undue
2837 reliance on behaviour described here, as it is possible that it will
2838 change subtly in future implementations.
2839
2840 @itemize @bullet
2841
2842 @item The mapping of physical source file multi-byte characters to the
2843 execution character set.
2844
2845 Currently, GNU cpp only supports character sets that are strict supersets
2846 of ASCII, and performs no translation of characters.
2847
2848 @item Non-empty sequences of whitespace characters.
2849
2850 Each whitespace sequence is not preserved, but collapsed to a single
2851 space.  For aesthetic reasons, the first token on each non-directive
2852 line of output is preceded with sufficient spaces that it appears in the
2853 same column as it did in the original source file.
2854
2855 @item The numeric value of character constants in preprocessor expressions.
2856
2857 The preprocessor interprets character constants in preprocessing
2858 directives on the host machine.  Expressions outside preprocessing
2859 directives are compiled to be interpreted on the target machine.  In the
2860 normal case of a native compiler, these two environments are the same
2861 and so character constants will be evaluated identically in both cases.
2862 However, in the case of a cross compiler, the values may be different.
2863
2864 Multi-character character constants are interpreted a character at a
2865 time, shifting the previous result left by the number of bits per
2866 character on the host, and adding the new character.  For example, 'ab'
2867 on an 8-bit host would be interpreted as 'a' * 256 + 'b'.  If there are
2868 more characters in the constant than can fit in the widest native
2869 integer type on the host, usually a @samp{long}, the behavior is
2870 undefined.
2871
2872 Evaluation of wide character constants is not properly implemented yet.
2873
2874 @item Source file inclusion.
2875
2876 For a discussion on how the preprocessor locates header files,
2877 @pxref{Include Operation}.
2878
2879 @item Interpretation of the filename resulting from a macro-expanded
2880 @samp{#include} directive.
2881
2882 If the macro expands to a string literal, the @samp{#include} directive
2883 is processed as if the string had been specified directly.  Otherwise,
2884 the macro must expand to a token stream beginning with a @samp{<} token
2885 and including a @samp{>} token.  In this case, the tokens between the
2886 @samp{<} and the first @samp{>} are combined to form the filename to be
2887 included.  Any whitespace between tokens is reduced to a single space;
2888 then any space after the initial @samp{<} is retained, but a trailing
2889 space before the closing @samp{>} is ignored.
2890
2891 In either case, if any excess tokens remain, an error occurs and the
2892 directive is not processed.
2893
2894 @item Treatment of a @samp{#pragma} directive that after macro-expansion
2895 results in a standard pragma.
2896
2897 The pragma is processed as if it were a normal standard pragma.
2898
2899 @end itemize
2900
2901 The following documents internal limits of GNU cpp.
2902
2903 @itemize @bullet
2904
2905 @item Nesting levels of @samp{#include} files.
2906
2907 We impose an arbitrary limit of 200 levels, to avoid runaway recursion.
2908 The standard requires at least 15 levels.
2909
2910 @item Nesting levels of conditional inclusion.
2911
2912 The C standard mandates this be at least 63.  The GNU C preprocessor
2913 is limited only by available memory.
2914
2915 @item Levels of parenthesised expressions within a full expression.
2916
2917 The C standard requires this to be at least 63.  In preprocessor
2918 conditional expressions it is limited only by available memory.
2919
2920 @item Significant initial characters in an identifier or macro name.
2921
2922 The preprocessor treats all characters as significant.  The C standard
2923 requires only that the first 63 be significant.
2924
2925 @item Number of macros simultaneously defined in a single translation unit.
2926
2927 The standard requires at least 4095 be possible; GNU cpp is limited only
2928 by available memory.
2929
2930 @item Number of parameters in a macro definition and arguments in a macro call.
2931
2932 We allow USHRT_MAX, which is normally 65,535, and above the minimum of
2933 127 required by the standard.
2934
2935 @item Number of characters on a logical source line.
2936
2937 The C standard requires a minimum of 4096 be permitted.  GNU cpp places
2938 no limits on this, but you may get incorrect column numbers reported in
2939 diagnostics for lines longer than 65,535 characters.
2940
2941 @end itemize
2942
2943 @node Unreliable Features, Invocation, Implementation, Top
2944 @section Undefined Behavior and Deprecated Features
2945 @cindex undefined behavior
2946 @cindex deprecated features
2947
2948 This section details GNU C preprocessor behavior that is subject to
2949 change or deprecated.  You are @emph{strongly advised} to write your
2950 software so it does not rely on anything described here; future versions
2951 of the preprocessor may subtly change such behavior or even remove the
2952 feature altogether.
2953
2954 Preservation of the form of whitespace between tokens is unlikely to
2955 change from current behavior (@ref{Output}), but you are advised not
2956 to rely on it.
2957
2958 The following are undocumented and subject to change:-
2959
2960 @itemize @bullet
2961
2962 @item Precedence of ## operators with respect to each other
2963
2964 Whether a sequence of ## operators is evaluated left-to-right,
2965 right-to-left or indeed in a consistent direction at all is not
2966 specified.  An example of where this might matter is pasting the
2967 arguments @samp{1}, @samp{e} and @samp{-2}.  This would be fine for
2968 left-to-right pasting, but right-to-left pasting would produce an
2969 invalid token @samp{e-2}.  It is possible to guarantee precedence by
2970 suitable use of nested macros.
2971
2972 @item Precedence of # operator with respect to the ## operator
2973
2974 Which of these two operators is evaluated first is not specified.
2975
2976 @end itemize
2977
2978 The following features are in flux and should not be used in portable
2979 code:
2980
2981 @itemize @bullet
2982
2983 @item Optional argument when invoking rest argument macros
2984
2985 As an extension, GCC permits you to omit the variable arguments entirely
2986 when you use a variable argument macro.  This works whether or not you
2987 give the variable argument a name.  For example, the two macro
2988 invocations in the example below expand to the same thing:
2989
2990 @smallexample
2991 #define debug(format, ...) printf (format, __VA_ARGS__)
2992 debug("string");       /* Not permitted by C standard.  */
2993 debug("string",);      /* OK.  */
2994 @end smallexample
2995
2996 This extension will be preserved, but the special behavior of @samp{##}
2997 in this context has changed in the past and may change again in the
2998 future.
2999
3000 @item ## swallowing preceding text in rest argument macros
3001
3002 Formerly, in a macro expansion, if @samp{##} appeared before a variable
3003 arguments parameter, and the set of tokens specified for that argument in
3004 the macro invocation was empty, previous versions of the GNU C
3005 preprocessor would back up and remove the preceding sequence of
3006 non-whitespace characters (@strong{not} the preceding token).  This
3007 extension is in direct conflict with the 1999 C standard and has been
3008 drastically pared back.
3009
3010 In the current version of the preprocessor, if @samp{##} appears between
3011 a comma and a variable arguments parameter, and the variable argument is
3012 omitted entirely, the comma will be removed from the expansion.  If the
3013 variable argument is empty, or the token before @samp{##} is not a
3014 comma, then @samp{##} behaves as a normal token paste.  
3015
3016 Portable code should avoid this extension at all costs.
3017
3018 @end itemize
3019
3020 The following features are deprecated and will likely be removed at some
3021 point in the future:-
3022
3023 @itemize @bullet
3024
3025 @item Attempting to paste two tokens which together do not form a valid
3026 preprocessing token
3027
3028 The preprocessor currently warns about this and outputs the two tokens
3029 adjacently, which is probably the behavior the programmer intends.  It
3030 may not work in future, though.
3031
3032 Most of the time, when you get this warning, you will find that @samp{##}
3033 is being used superstitiously, to guard against whitespace appearing
3034 between two tokens.  It is almost always safe to delete the @samp{##}.
3035
3036 @findex #pragma once
3037 @item #pragma once
3038
3039 This pragma was once used to tell the preprocessor that it need not
3040 include a file more than once.  It is now obsolete and should not be
3041 used at all.
3042
3043 @item #pragma poison
3044
3045 This pragma has been superseded by @samp{#pragma GCC poison}.
3046 @xref{Poisoning}.
3047
3048 @item Multi-line string literals in directives
3049
3050 The GNU C preprocessor currently allows newlines in string literals
3051 within a directive.  This is forbidden by the C standard and will
3052 eventually be removed.  (Multi-line string literals in open text are
3053 still supported.)
3054
3055 @item Preprocessing things which are not C
3056
3057 The C preprocessor is intended to be used only with C, C++, and
3058 Objective C source code.  In the past, it has been abused as a general
3059 text processor.  It will choke on input which is not lexically valid C;
3060 for example, apostrophes will be interpreted as the beginning of
3061 character constants, and cause errors.  Also, you cannot rely on it
3062 preserving characteristics of the input which are not significant to
3063 C-family languages.  For instance, if a Makefile is preprocessed, all
3064 the hard tabs will be lost, and the Makefile will not work.
3065
3066 Having said that, you can often get away with using cpp on things which
3067 are not C.  Other Algol-ish programming languages are often safe
3068 (Pascal, Ada, ...)  and so is assembly, with caution. @samp{-traditional}
3069 mode is much more permissive, and can safely be used with e.g. Fortran.
3070 Many of the problems go away if you write C or C++ style comments
3071 instead of native language comments, and if you avoid elaborate macros.
3072
3073 Wherever possible, you should use a preprocessor geared to the language
3074 you are writing in.  Modern versions of the GNU assembler have macro
3075 facilities.  Most high level programming languages have their own
3076 conditional compilation and inclusion mechanism.  If all else fails,
3077 try a true general text processor, such as @xref{Top, M4, , m4, GNU `m4'}.
3078
3079 @end itemize
3080
3081 @node Invocation, Concept Index, Unreliable Features, Top
3082 @section Invoking the C Preprocessor
3083 @cindex invocation of the preprocessor
3084
3085 Most often when you use the C preprocessor you will not have to invoke it
3086 explicitly: the C compiler will do so automatically.  However, the
3087 preprocessor is sometimes useful on its own.
3088
3089 @ignore
3090 @c man begin SYNOPSIS
3091 cpp [@samp{-P}] [@samp{-C}] [@samp{-gcc}] [@samp{-traditional}]
3092     [@samp{-undef}] [@samp{-trigraphs}] [@samp{-pedantic}]
3093     [@samp{-W}@var{warn}...] [@samp{-I}@var{dir}...]
3094     [@samp{-D}@var{macro}[=@var{defn}]...] [@samp{-U}@var{macro}]
3095     [@samp{-A}@var{predicate}(@var{answer})]
3096     [@samp{-M}|@samp{-MM}][@samp{-MG}][@samp{-MF}@var{filename}]
3097     [@samp{-MP}][@samp{-MQ}@var{target}...][@samp{-MT}@var{target}...]
3098     [@samp{-x} @var{language}] [@samp{-std=}@var{standard}]
3099     @var{infile} @var{outfile}
3100
3101 Only the most useful options are listed here; see below for the remainder.
3102 @c man end
3103 @c man begin SEEALSO
3104 gcc(1), as(1), ld(1), and the Info entries for @file{cpp}, @file{gcc}, and
3105 @file{binutils}.
3106 @c man end
3107 @end ignore
3108
3109 @c man begin OPTIONS
3110 The C preprocessor expects two file names as arguments, @var{infile} and
3111 @var{outfile}.  The preprocessor reads @var{infile} together with any
3112 other files it specifies with @samp{#include}.  All the output generated
3113 by the combined input files is written in @var{outfile}.
3114
3115 Either @var{infile} or @var{outfile} may be @samp{-}, which as
3116 @var{infile} means to read from standard input and as @var{outfile}
3117 means to write to standard output.  Also, if either file is omitted, it
3118 means the same as if @samp{-} had been specified for that file.
3119
3120 @cindex options
3121 Here is a table of command options accepted by the C preprocessor.
3122 These options can also be given when compiling a C program; they are
3123 passed along automatically to the preprocessor when it is invoked by the
3124 compiler.
3125
3126 @table @samp
3127 @item -P
3128 @findex -P
3129 Inhibit generation of @samp{#}-lines with line-number information in the
3130 output from the preprocessor.  This might be useful when running the
3131 preprocessor on something that is not C code and will be sent to a
3132 program which might be confused by the @samp{#}-lines.  @xref{Output}.
3133
3134 @item -C
3135 @findex -C
3136 Do not discard comments.  All comments are passed through to the output
3137 file, except for comments in processed directives, which are deleted
3138 along with the directive.  Comments appearing in the expansion list of a
3139 macro will be preserved, and appear in place wherever the macro is
3140 invoked.
3141
3142 You should be prepared for side effects when using @samp{-C}; it causes
3143 the preprocessor to treat comments as tokens in their own right.  For
3144 example, macro redefinitions that were trivial when comments were
3145 replaced by a single space might become significant when comments are
3146 retained.  Also, comments appearing at the start of what would be a
3147 directive line have the effect of turning that line into an ordinary
3148 source line, since the first token on the line is no longer a @samp{#}.
3149
3150 @item -traditional
3151 @findex -traditional
3152 Try to imitate the behavior of old-fashioned C, as opposed to ISO C@.
3153
3154 @itemize @bullet
3155 @item
3156 Traditional macro expansion pays no attention to single-quote or
3157 double-quote characters; macro argument symbols are replaced by the
3158 argument values even when they appear within apparent string or
3159 character constants.
3160
3161 @item
3162 Traditionally, it is permissible for a macro expansion to end in the
3163 middle of a string or character constant.  The constant continues into
3164 the text surrounding the macro call.
3165
3166 @item
3167 However, traditionally the end of the line terminates a string or
3168 character constant, with no error.
3169
3170 @item
3171 In traditional C, a comment is equivalent to no text at all.  (In ISO
3172 C, a comment counts as whitespace.)
3173
3174 @item
3175 Traditional C does not have the concept of a ``preprocessing number''.
3176 It considers @samp{1.0e+4} to be three tokens: @samp{1.0e}, @samp{+},
3177 and @samp{4}.
3178
3179 @item
3180 A macro is not suppressed within its own definition, in traditional C@.
3181 Thus, any macro that is used recursively inevitably causes an error.
3182
3183 @item
3184 The character @samp{#} has no special meaning within a macro definition
3185 in traditional C@.
3186
3187 @item
3188 In traditional C, the text at the end of a macro expansion can run
3189 together with the text after the macro call, to produce a single token.
3190 (This is impossible in ISO C@.)
3191
3192 @item
3193 None of the GNU extensions to the preprocessor are available in
3194 @samp{-traditional} mode.
3195
3196 @end itemize
3197
3198 @cindex Fortran
3199 @cindex unterminated
3200 Use the @samp{-traditional} option when preprocessing Fortran code, so
3201 that single-quotes and double-quotes within Fortran comment lines (which
3202 are generally not recognized as such by the preprocessor) do not cause
3203 diagnostics about unterminated character or string constants.
3204
3205 However, this option does not prevent diagnostics about unterminated
3206 comments when a C-style comment appears to start, but not end, within
3207 Fortran-style commentary.
3208
3209 So, the following Fortran comment lines are accepted with
3210 @samp{-traditional}:
3211
3212 @smallexample
3213 C This isn't an unterminated character constant
3214 C Neither is "20000000000, an octal constant
3215 C in some dialects of Fortran
3216 @end smallexample
3217
3218 However, this type of comment line will likely produce a diagnostic, or
3219 at least unexpected output from the preprocessor, due to the
3220 unterminated comment:
3221
3222 @smallexample
3223 C Some Fortran compilers accept /* as starting
3224 C an inline comment.
3225 @end smallexample
3226
3227 @cindex g77
3228 Note that @code{g77} automatically supplies the @samp{-traditional}
3229 option when it invokes the preprocessor.  However, a future version of
3230 @code{g77} might use a different, more-Fortran-aware preprocessor in
3231 place of @code{cpp}.
3232
3233 @item -trigraphs
3234 @findex -trigraphs
3235 Process ISO standard trigraph sequences.  These are three-character
3236 sequences, all starting with @samp{??}, that are defined by ISO C to
3237 stand for single characters.  For example, @samp{??/} stands for
3238 @samp{\}, so @samp{'??/n'} is a character constant for a newline.  By
3239 default, GCC ignores trigraphs, but in standard-conforming modes it
3240 converts them.  See the @samp{-std} option.
3241
3242 The nine trigraph sequences are
3243 @table @samp
3244 @item ??(
3245 -> @samp{[}
3246
3247 @item ??)
3248 -> @samp{]}
3249
3250 @item ??<
3251 -> @samp{@{}
3252
3253 @item ??>
3254 -> @samp{@}}
3255
3256 @item ??=
3257 -> @samp{#}
3258
3259 @item ??/
3260 -> @samp{\}
3261
3262 @item ??'
3263 -> @samp{^}
3264
3265 @item ??!
3266 -> @samp{|}
3267
3268 @item ??-
3269 -> @samp{~}
3270
3271 @end table
3272
3273 Trigraph support is not popular, so many compilers do not implement it
3274 properly.  Portable code should not rely on trigraphs being either
3275 converted or ignored.
3276
3277 @item -pedantic
3278 @findex -pedantic
3279 Issue warnings required by the ISO C standard in certain cases such
3280 as when text other than a comment follows @samp{#else} or @samp{#endif}.
3281
3282 @item -pedantic-errors
3283 @findex -pedantic-errors
3284 Like @samp{-pedantic}, except that errors are produced rather than
3285 warnings.
3286
3287 @item -Wcomment
3288 @findex -Wcomment
3289 @itemx -Wcomments
3290 (Both forms have the same effect).
3291 Warn whenever a comment-start sequence @samp{/*} appears in a @samp{/*}
3292 comment, or whenever a backslash-newline appears in a @samp{//} comment.
3293
3294 @item -Wtrigraphs
3295 @findex -Wtrigraphs
3296 Warn if any trigraphs are encountered.  This option used to take effect
3297 only if @samp{-trigraphs} was also specified, but now works
3298 independently.  Warnings are not given for trigraphs within comments, as
3299 we feel this is obnoxious.
3300
3301 @item -Wwhite-space
3302 @findex -Wwhite-space
3303 Warn about possible white space confusion, e.g. white space between a
3304 backslash and a newline.
3305
3306 @item -Wall
3307 @findex -Wall
3308 Requests @samp{-Wcomment}, @samp{-Wtrigraphs}, and @samp{-Wwhite-space}
3309 (but not @samp{-Wtraditional} or @samp{-Wundef}).
3310
3311 @item -Wtraditional
3312 @findex -Wtraditional
3313 Warn about certain constructs that behave differently in traditional and
3314 ISO C@.
3315
3316 @item -Wundef
3317 @findex -Wundef
3318 Warn if an undefined identifier is evaluated in an @samp{#if} directive.
3319
3320 @item -I @var{directory}
3321 @findex -I
3322 Add the directory @var{directory} to the head of the list of
3323 directories to be searched for header files (@pxref{Include Syntax}).
3324 This can be used to override a system header file, substituting your
3325 own version, since these directories are searched before the system
3326 header file directories.  If you use more than one @samp{-I} option,
3327 the directories are scanned in left-to-right order; the standard
3328 system directories come after.
3329
3330 @item -I-
3331 Any directories specified with @samp{-I} options before the @samp{-I-}
3332 option are searched only for the case of @samp{#include "@var{file}"};
3333 they are not searched for @samp{#include <@var{file}>}.
3334
3335 If additional directories are specified with @samp{-I} options after
3336 the @samp{-I-}, these directories are searched for all @samp{#include}
3337 directives.
3338
3339 In addition, the @samp{-I-} option inhibits the use of the current
3340 directory as the first search directory for @samp{#include "@var{file}"}.
3341 Therefore, the current directory is searched only if it is requested
3342 explicitly with @samp{-I.}.  Specifying both @samp{-I-} and @samp{-I.}
3343 allows you to control precisely which directories are searched before
3344 the current one and which are searched after.
3345
3346 @item -nostdinc
3347 @findex -nostdinc
3348 Do not search the standard system directories for header files.
3349 Only the directories you have specified with @samp{-I} options
3350 (and the current directory, if appropriate) are searched.
3351
3352 By using both @samp{-nostdinc} and @samp{-I-}, you can limit the include-file
3353 search path to only those directories you specify explicitly.
3354
3355 @item -nostdinc++
3356 @findex -nostdinc++
3357 Do not search for header files in the C++-specific standard directories,
3358 but do still search the other standard directories.  (This option is
3359 used when building the C++ library.)
3360
3361 @item -remap
3362 @findex -remap
3363 When searching for a header file in a directory, remap file names if a
3364 file named @file{header.gcc} exists in that directory.  This can be used
3365 to work around limitations of file systems with file name restrictions.
3366 The @file{header.gcc} file should contain a series of lines with two
3367 tokens on each line: the first token is the name to map, and the second
3368 token is the actual name to use.
3369
3370 @item -D @var{name}
3371 @findex -D
3372 Predefine @var{name} as a macro, with definition @samp{1}.
3373
3374 @item -D @var{name}=@var{definition}
3375 Predefine @var{name} as a macro, with definition @var{definition}.
3376 There are no restrictions on the contents of @var{definition}, but if
3377 you are invoking the preprocessor from a shell or shell-like program you
3378 may need to use the shell's quoting syntax to protect characters such as
3379 spaces that have a meaning in the shell syntax.  If you use more than
3380 one @samp{-D} for the same @var{name}, the rightmost definition takes
3381 effect.
3382
3383 Any @samp{-D} and @samp{-U} options on the command line are processed in
3384 order, and always before @samp{-imacros @var{file}}, regardless of the
3385 order in which they are written.
3386
3387 @item -U @var{name}
3388 @findex -U
3389 Do not predefine @var{name}.
3390
3391 Any @samp{-D} and @samp{-U} options on the command line are processed in
3392 order, and always before @samp{-imacros @var{file}}, regardless of the
3393 order in which they are written.
3394
3395 @item -undef
3396 @findex -undef
3397 Do not predefine any nonstandard macros.
3398
3399 @item -gcc
3400 @findex -gcc
3401 Define the macros @var{__GNUC__}, @var{__GNUC_MINOR__} and
3402 @var{__GNUC_PATCHLEVEL__}. These are defined automatically when you use
3403 @samp{gcc -E}; you can turn them off in that case with @samp{-no-gcc}.
3404
3405 @item -A @var{predicate}=@var{answer}
3406 @findex -A
3407 Make an assertion with the predicate @var{predicate} and answer
3408 @var{answer}.  This form is preferred to the older form @samp{-A
3409 @var{predicate}(@var{answer})}, which is still supported, because
3410 it does not use shell special characters.  @xref{Assertions}.
3411
3412 @item -A -@var{predicate}=@var{answer}
3413 Disable an assertion with the predicate @var{predicate} and answer
3414 @var{answer}.  Specifying no predicate, by @samp{-A-} or @samp{-A -},
3415 disables all predefined assertions and all assertions preceding it on
3416 the command line; and also undefines all predefined macros and all
3417 macros preceding it on the command line.
3418
3419 @item -dM
3420 @findex -dM
3421 Instead of outputting the result of preprocessing, output a list of
3422 @samp{#define} directives for all the macros defined during the
3423 execution of the preprocessor, including predefined macros.  This gives
3424 you a way of finding out what is predefined in your version of the
3425 preprocessor; assuming you have no file @samp{foo.h}, the command
3426
3427 @example
3428 touch foo.h; cpp -dM foo.h
3429 @end example
3430
3431 @noindent 
3432 will show the values of any predefined macros.
3433
3434 @item -dD
3435 @findex -dD
3436 Like @samp{-dM} except in two respects: it does @emph{not} include the
3437 predefined macros, and it outputs @emph{both} the @samp{#define}
3438 directives and the result of preprocessing.  Both kinds of output go to
3439 the standard output file.
3440
3441 @item -dN
3442 @findex -dN
3443 Like @samp{-dD}, but emit only the macro names, not their expansions.
3444
3445 @item -dI
3446 @findex -dI
3447 Output @samp{#include} directives in addition to the result of
3448 preprocessing.
3449
3450 @item -M
3451 @findex -M
3452 Instead of outputting the result of preprocessing, output a rule
3453 suitable for @code{make} describing the dependencies of the main source
3454 file.  The preprocessor outputs one @code{make} rule containing the
3455 object file name for that source file, a colon, and the names of all the
3456 included files, including those coming from @samp{-include} or
3457 @samp{-imacros} command line options.  If there are many included files
3458 then the rule is split into several lines using @samp{\}-newline.
3459
3460 @item -MM
3461 @findex -MM
3462 Like @samp{-M}, but mention only the files included with @samp{#include
3463 "@var{file}"} or with @samp{-include} or @samp{-imacros} command line
3464 options.  System header files included with @samp{#include <@var{file}>}
3465 are omitted.
3466
3467 @item -MF @var{file}
3468 @findex -MF
3469 When used with @samp{-M} or @samp{-MM}, specifies a file to write the
3470 dependencies to.  This allows the preprocessor to write the preprocessed
3471 file to stdout normally.  If no @samp{-MF} switch is given, CPP sends
3472 the rules to stdout and suppresses normal preprocessed output.
3473
3474 @item -MG
3475 @findex -MG
3476 When used with @samp{-M} or @samp{-MM}, @samp{-MG} says to treat missing
3477 header files as generated files and assume they live in the same
3478 directory as the source file.  It suppresses preprocessed output, as a
3479 missing header file is ordinarily an error.
3480
3481 This feature is used in automatic updating of makefiles.
3482
3483 @item -MP
3484 @findex -MP
3485 This option instructs CPP to add a phony target for each dependency
3486 other than the main file, causing each to depend on nothing.  These
3487 dummy rules work around errors @code{make} gives if you remove header
3488 files without updating the @code{Makefile} to match.
3489
3490 This is typical output:-
3491
3492 @smallexample
3493 /tmp/test.o: /tmp/test.c /tmp/test.h
3494
3495 /tmp/test.h:
3496 @end smallexample
3497
3498 @item -MQ @var{target}
3499 @item -MT @var{target}
3500 @findex -MQ
3501 @findex -MT
3502 By default CPP uses the main file name, including any path, and appends
3503 the object suffix, normally ``.o'', to it to obtain the name of the
3504 target for dependency generation.  With @samp{-MT} you can specify a
3505 target yourself, overriding the default one.
3506
3507 If you want multiple targets, you can specify them as a single argument
3508 to @samp{-MT}, or use multiple @samp{-MT} options.
3509
3510 The targets you specify are output in the order they appear on the
3511 command line.  @samp{-MQ} is identical to @samp{-MT}, except that the
3512 target name is quoted for Make, but with @samp{-MT} it isn't.  For
3513 example, -MT '$(objpfx)foo.o' gives
3514
3515 @smallexample
3516 $(objpfx)foo.o: /tmp/foo.c
3517 @end smallexample
3518
3519 but -MQ '$(objpfx)foo.o' gives
3520
3521 @smallexample
3522 $$(objpfx)foo.o: /tmp/foo.c
3523 @end smallexample
3524
3525 The default target is automatically quoted, as if it were given with
3526 @samp{-MQ}.
3527
3528 @item -H
3529 @findex -H
3530 Print the name of each header file used, in addition to other normal
3531 activities.
3532
3533 @item -imacros @var{file}
3534 @findex -imacros
3535 Process @var{file} as input, discarding the resulting output, before
3536 processing the regular input file.  Because the output generated from
3537 @var{file} is discarded, the only effect of @samp{-imacros @var{file}}
3538 is to make the macros defined in @var{file} available for use in the
3539 main input.
3540
3541 @item -include @var{file}
3542 @findex -include
3543 Process @var{file} as input, and include all the resulting output,
3544 before processing the regular input file.  
3545
3546 @item -idirafter @var{dir}
3547 @findex -idirafter
3548 @cindex second include path
3549 Add the directory @var{dir} to the second include path.  The directories
3550 on the second include path are searched when a header file is not found
3551 in any of the directories in the main include path (the one that
3552 @samp{-I} adds to).
3553
3554 @item -iprefix @var{prefix}
3555 @findex -iprefix
3556 Specify @var{prefix} as the prefix for subsequent @samp{-iwithprefix}
3557 options.  If the prefix represents a directory, you should include the
3558 final @samp{/}.
3559
3560 @item -iwithprefix @var{dir}
3561 @findex -iwithprefix
3562 Add a directory to the second include path.  The directory's name is
3563 made by concatenating @var{prefix} and @var{dir}, where @var{prefix} was
3564 specified previously with @samp{-iprefix}.
3565
3566 @item -isystem @var{dir}
3567 @findex -isystem
3568 Add a directory to the beginning of the second include path, marking it
3569 as a system directory, so that it gets the same special treatment as
3570 is applied to the standard system directories.  @xref{System Headers}.
3571
3572 @item -x c
3573 @itemx -x c++
3574 @itemx -x objective-c
3575 @itemx -x assembler-with-cpp
3576 @findex -x c
3577 @findex -x objective-c
3578 @findex -x assembler-with-cpp
3579 Specify the source language: C, C++, Objective-C, or assembly.  This has
3580 nothing to do with standards conformance or extensions; it merely
3581 selects which base syntax to expect.  If you give none of these options,
3582 cpp will deduce the language from the extension of the source file:
3583 @samp{.c}, @samp{.cc}, @samp{.m}, or @samp{.S}.  Some other common
3584 extensions for C++ and assembly are also recognized.  If cpp does not
3585 recognize the extension, it will treat the file as C; this is the most
3586 generic mode.
3587
3588 @strong{Note:} Previous versions of cpp accepted a @samp{-lang} option
3589 which selected both the language and the standards conformance level.
3590 This option has been removed, because it conflicts with the @samp{-l}
3591 option.
3592
3593 @item -std=@var{standard}
3594 @itemx -ansi
3595 @findex -std
3596 @findex -ansi
3597 Specify the standard to which the code should conform.  Currently cpp
3598 only knows about the standards for C; other language standards will be
3599 added in the future.
3600
3601 @var{standard}
3602 may be one of:
3603 @table @code
3604 @item iso9899:1990
3605 @itemx c89
3606 The ISO C standard from 1990.  @samp{c89} is the customary shorthand for
3607 this version of the standard.
3608
3609 The @samp{-ansi} option is equivalent to @samp{-std=c89}.
3610
3611 @item iso9899:199409
3612 The 1990 C standard, as amended in 1994.
3613
3614 @item iso9899:1999
3615 @itemx c99
3616 @itemx iso9899:199x
3617 @itemx c9x
3618 The revised ISO C standard, published in December 1999.  Before
3619 publication, this was known as C9X.
3620
3621 @item gnu89
3622 The 1990 C standard plus GNU extensions.  This is the default.
3623
3624 @item gnu99
3625 @itemx gnu9x
3626 The 1999 C standard plus GNU extensions.
3627 @end table
3628
3629 @item -ftabstop=NUMBER
3630 @findex -ftabstop
3631 Set the distance between tab stops.  This helps the preprocessor
3632 report correct column numbers in warnings or errors, even if tabs appear
3633 on the line.  Values less than 1 or greater than 100 are ignored.  The
3634 default is 8.
3635
3636 @item -$
3637 @findex -$
3638 Forbid the use of @samp{$} in identifiers.  The C standard allows
3639 implementations to define extra characters that can appear in
3640 identifiers.  By default the GNU C preprocessor permits @samp{$}, a
3641 common extension.
3642 @end table
3643 @c man end
3644
3645 @node Concept Index, Index, Invocation, Top
3646 @unnumbered Concept Index
3647 @printindex cp
3648
3649 @node Index,, Concept Index, Top
3650 @unnumbered Index of Directives, Macros and Options
3651 @printindex fn
3652
3653 @contents
3654 @bye