OSDN Git Service

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