|
|
1.1 root 1: \input texinfo
2: @setfilename cpp.info
3: @settitle The C Preprocessor
4:
5: @ignore
6: @ifinfo
7: @format
8: START-INFO-DIR-ENTRY
9: * Cpp: (cpp). The C preprocessor.
10: END-INFO-DIR-ENTRY
11: @end format
12: @end ifinfo
13: @end ignore
14:
15: @c @smallbook
16: @c @cropmarks
17: @c @finalout
18: @setchapternewpage odd
19: @ifinfo
20: This file documents the GNU C Preprocessor.
21:
1.1.1.8 ! root 22: Copyright 1987, 1989, 1991, 1992, 1993, 1994, 1995 Free Software
! 23: Foundation, Inc.
1.1 root 24:
25: Permission is granted to make and distribute verbatim copies of
26: this manual provided the copyright notice and this permission notice
27: are preserved on all copies.
28:
29: @ignore
30: Permission is granted to process this file through Tex and print the
31: results, provided the printed document carries copying permission
32: notice identical to this one except for the removal of this paragraph
33: (this paragraph not being relevant to the printed manual).
34:
35: @end ignore
36: Permission is granted to copy and distribute modified versions of this
37: manual under the conditions for verbatim copying, provided also that
38: the entire resulting derived work is distributed under the terms of a
39: permission notice identical to this one.
40:
41: Permission is granted to copy and distribute translations of this manual
42: into another language, under the above conditions for modified versions.
43: @end ifinfo
44:
45: @titlepage
46: @c @finalout
1.1.1.4 root 47: @title The C Preprocessor
48: @subtitle Last revised July 1992
49: @subtitle for GCC version 2
50: @author Richard M. Stallman
1.1 root 51: @page
52: @vskip 2pc
53: This booklet is eventually intended to form the first chapter of a GNU
54: C Language manual.
55:
56: @vskip 0pt plus 1filll
1.1.1.8 ! root 57: Copyright @copyright{} 1987, 1989, 1991, 1992, 1993, 1994, 1995 Free
! 58: Software Foundation, Inc.
1.1 root 59:
60: Permission is granted to make and distribute verbatim copies of
61: this manual provided the copyright notice and this permission notice
62: are preserved on all copies.
63:
64: Permission is granted to copy and distribute modified versions of this
65: manual under the conditions for verbatim copying, provided also that
66: the entire resulting derived work is distributed under the terms of a
67: permission notice identical to this one.
68:
69: Permission is granted to copy and distribute translations of this manual
70: into another language, under the above conditions for modified versions.
71: @end titlepage
72: @page
73:
74: @node Top, Global Actions,, (DIR)
75: @chapter The C Preprocessor
76:
77: The C preprocessor is a @dfn{macro processor} that is used automatically by
78: the C compiler to transform your program before actual compilation. It is
79: called a macro processor because it allows you to define @dfn{macros},
80: which are brief abbreviations for longer constructs.
81:
82: The C preprocessor provides four separate facilities that you can use as
83: you see fit:
84:
85: @itemize @bullet
86: @item
87: Inclusion of header files. These are files of declarations that can be
88: substituted into your program.
89:
90: @item
91: Macro expansion. You can define @dfn{macros}, which are abbreviations
92: for arbitrary fragments of C code, and then the C preprocessor will
93: replace the macros with their definitions throughout the program.
94:
95: @item
1.1.1.8 ! root 96: Conditional compilation. Using special preprocessing directives, you
1.1 root 97: can include or exclude parts of the program according to various
98: conditions.
99:
100: @item
101: Line control. If you use a program to combine or rearrange source files into
102: an intermediate file which is then compiled, you can use line control
103: to inform the compiler of where each source line originally came from.
104: @end itemize
105:
106: C preprocessors vary in some details. This manual discusses the GNU C
107: preprocessor, the C Compatible Compiler Preprocessor. The GNU C
108: preprocessor provides a superset of the features of ANSI Standard C.
109:
110: ANSI Standard C requires the rejection of many harmless constructs commonly
111: used by today's C programs. Such incompatibility would be inconvenient for
112: users, so the GNU C preprocessor is configured to accept these constructs
113: by default. Strictly speaking, to get ANSI Standard C, you must use the
114: options @samp{-trigraphs}, @samp{-undef} and @samp{-pedantic}, but in
115: practice the consequences of having strict ANSI Standard C make it
116: undesirable to do this. @xref{Invocation}.
117:
118: @menu
119: * Global Actions:: Actions made uniformly on all input files.
1.1.1.8 ! root 120: * Directives:: General syntax of preprocessing directives.
1.1 root 121: * Header Files:: How and why to use header files.
122: * Macros:: How and why to use macros.
123: * Conditionals:: How and why to use conditionals.
124: * Combining Sources:: Use of line control when you combine source files.
1.1.1.8 ! root 125: * Other Directives:: Miscellaneous preprocessing directives.
1.1 root 126: * Output:: Format of output from the C preprocessor.
127: * Invocation:: How to invoke the preprocessor; command options.
128: * Concept Index:: Index of concepts and terms.
1.1.1.8 ! root 129: * Index:: Index of directives, predefined macros and options.
1.1 root 130: @end menu
131:
1.1.1.8 ! root 132: @node Global Actions, Directives, Top, Top
1.1 root 133: @section Transformations Made Globally
134:
1.1.1.8 ! root 135: Most C preprocessor features are inactive unless you give specific directives
! 136: to request their use. (Preprocessing directives are lines starting with
! 137: @samp{#}; @pxref{Directives}). But there are three transformations that the
1.1 root 138: preprocessor always makes on all the input it receives, even in the absence
1.1.1.8 ! root 139: of directives.
1.1 root 140:
141: @itemize @bullet
142: @item
143: All C comments are replaced with single spaces.
144:
145: @item
146: Backslash-Newline sequences are deleted, no matter where. This
147: feature allows you to break long lines for cosmetic purposes without
148: changing their meaning.
149:
150: @item
151: Predefined macro names are replaced with their expansions
152: (@pxref{Predefined}).
153: @end itemize
154:
155: The first two transformations are done @emph{before} nearly all other parsing
1.1.1.8 ! root 156: and before preprocessing directives are recognized. Thus, for example, you
1.1 root 157: can split a line cosmetically with Backslash-Newline anywhere (except
158: when trigraphs are in use; see below).
159:
160: @example
161: /*
162: */ # /*
163: */ defi\
164: ne FO\
165: O 10\
166: 20
167: @end example
168:
169: @noindent
170: is equivalent into @samp{#define FOO 1020}. You can split even an escape
171: sequence with Backslash-Newline. For example, you can split @code{"foo\bar"}
172: between the @samp{\} and the @samp{b} to get
173:
174: @example
175: "foo\\
176: bar"
177: @end example
178:
179: @noindent
180: This behavior is unclean: in all other contexts, a Backslash can be
181: inserted in a string constant as an ordinary character by writing a double
182: Backslash, and this creates an exception. But the ANSI C standard requires
183: it. (Strict ANSI C does not allow Newlines in string constants, so they
184: do not consider this a problem.)
185:
186: But there are a few exceptions to all three transformations.
187:
188: @itemize @bullet
189: @item
190: C comments and predefined macro names are not recognized inside a
1.1.1.8 ! root 191: @samp{#include} directive in which the file name is delimited with
1.1 root 192: @samp{<} and @samp{>}.
193:
194: @item
195: C comments and predefined macro names are never recognized within a
196: character or string constant. (Strictly speaking, this is the rule,
197: not an exception, but it is worth noting here anyway.)
198:
199: @item
200: Backslash-Newline may not safely be used within an ANSI ``trigraph''.
201: Trigraphs are converted before Backslash-Newline is deleted. If you
202: write what looks like a trigraph with a Backslash-Newline inside, the
203: Backslash-Newline is deleted as usual, but it is then too late to
204: recognize the trigraph.
205:
206: This exception is relevant only if you use the @samp{-trigraphs}
207: option to enable trigraph processing. @xref{Invocation}.
208: @end itemize
209:
1.1.1.8 ! root 210: @node Directives, Header Files, Global Actions, Top
! 211: @section Preprocessing Directives
1.1 root 212:
1.1.1.8 ! root 213: @cindex preprocessing directives
! 214: @cindex directives
! 215: Most preprocessor features are active only if you use preprocessing directives
1.1 root 216: to request their use.
217:
1.1.1.8 ! root 218: Preprocessing directives are lines in your program that start with @samp{#}.
! 219: The @samp{#} is followed by an identifier that is the @dfn{directive name}.
! 220: For example, @samp{#define} is the directive that defines a macro.
1.1 root 221: Whitespace is also allowed before and after the @samp{#}.
222:
1.1.1.8 ! root 223: The set of valid directive names is fixed. Programs cannot define new
! 224: preprocessing directives.
1.1 root 225:
1.1.1.8 ! root 226: Some directive names require arguments; these make up the rest of the directive
! 227: line and must be separated from the directive name by whitespace. For example,
1.1 root 228: @samp{#define} must be followed by a macro name and the intended expansion
1.1.1.7 root 229: of the macro. @xref{Simple Macros}.
1.1 root 230:
1.1.1.8 ! root 231: A preprocessing directive cannot be more than one line in normal circumstances.
1.1 root 232: It may be split cosmetically with Backslash-Newline, but that has no effect
1.1.1.8 ! root 233: on its meaning. Comments containing Newlines can also divide the
! 234: directive into multiple lines, but the comments are changed to Spaces
! 235: before the directive is interpreted. The only way a significant Newline
! 236: can occur in a preprocessing directive is within a string constant or
! 237: character constant. Note that
1.1 root 238: most C compilers that might be applied to the output from the preprocessor
239: do not accept string or character constants containing Newlines.
240:
1.1.1.8 ! root 241: The @samp{#} and the directive name cannot come from a macro expansion. For
1.1 root 242: example, if @samp{foo} is defined as a macro expanding to @samp{define},
1.1.1.8 ! root 243: that does not make @samp{#foo} a valid preprocessing directive.
1.1 root 244:
1.1.1.8 ! root 245: @node Header Files, Macros, Directives, Top
1.1 root 246: @section Header Files
247:
248: @cindex header file
249: A header file is a file containing C declarations and macro definitions
250: (@pxref{Macros}) to be shared between several source files. You request
1.1.1.8 ! root 251: the use of a header file in your program with the C preprocessing directive
1.1 root 252: @samp{#include}.
253:
254: @menu
255: * Header Uses:: What header files are used for.
1.1.1.8 ! root 256: * Include Syntax:: How to write @samp{#include} directives.
1.1 root 257: * Include Operation:: What @samp{#include} does.
258: * Once-Only:: Preventing multiple inclusion of one header file.
259: * Inheritance:: Including one header file in another header file.
260: @end menu
261:
262: @node Header Uses, Include Syntax, Header Files, Header Files
263: @subsection Uses of Header Files
264:
265: Header files serve two kinds of purposes.
266:
267: @itemize @bullet
268: @item
269: @findex system header files
270: System header files declare the interfaces to parts of the operating
271: system. You include them in your program to supply the definitions and
272: declarations you need to invoke system calls and libraries.
273:
274: @item
275: Your own header files contain declarations for interfaces between the
276: source files of your program. Each time you have a group of related
277: declarations and macro definitions all or most of which are needed in
278: several different source files, it is a good idea to create a header
279: file for them.
280: @end itemize
281:
282: Including a header file produces the same results in C compilation as
283: copying the header file into each source file that needs it. But such
284: copying would be time-consuming and error-prone. With a header file, the
285: related declarations appear in only one place. If they need to be changed,
286: they can be changed in one place, and programs that include the header file
287: will automatically use the new version when next recompiled. The header
288: file eliminates the labor of finding and changing all the copies as well as
289: the risk that a failure to find one copy will result in inconsistencies
290: within a program.
291:
1.1.1.7 root 292: The usual convention is to give header files names that end with
293: @file{.h}. Avoid unusual characters in header file names, as they
294: reduce portability.
1.1 root 295:
296: @node Include Syntax, Include Operation, Header Uses, Header Files
1.1.1.8 ! root 297: @subsection The @samp{#include} Directive
1.1 root 298:
299: @findex #include
1.1.1.8 ! root 300: Both user and system header files are included using the preprocessing
! 301: directive @samp{#include}. It has three variants:
1.1 root 302:
303: @table @code
304: @item #include <@var{file}>
305: This variant is used for system header files. It searches for a file
306: named @var{file} in a list of directories specified by you, then in a
307: standard list of system directories. You specify directories to
308: search for header files with the command option @samp{-I}
309: (@pxref{Invocation}). The option @samp{-nostdinc} inhibits searching
310: the standard system directories; in this case only the directories
311: you specify are searched.
312:
313: The parsing of this form of @samp{#include} is slightly special
314: because comments are not recognized within the @samp{<@dots{}>}.
315: Thus, in @samp{#include <x/*y>} the @samp{/*} does not start a comment
1.1.1.8 ! root 316: and the directive specifies inclusion of a system header file named
1.1 root 317: @file{x/*y}. Of course, a header file with such a name is unlikely to
318: exist on Unix, where shell wildcard features would make it hard to
319: manipulate.@refill
320:
321: The argument @var{file} may not contain a @samp{>} character. It may,
322: however, contain a @samp{<} character.
323:
324: @item #include "@var{file}"
325: This variant is used for header files of your own program. It
326: searches for a file named @var{file} first in the current directory,
327: then in the same directories used for system header files. The
328: current directory is the directory of the current input file. It is
329: tried first because it is presumed to be the location of the files
330: that the current input file refers to. (If the @samp{-I-} option is
331: used, the special treatment of the current directory is inhibited.)
332:
333: The argument @var{file} may not contain @samp{"} characters. If
334: backslashes occur within @var{file}, they are considered ordinary text
335: characters, not escape characters. None of the character escape
336: sequences appropriate to string constants in C are processed. Thus,
337: @samp{#include "x\n\\y"} specifies a filename containing three
338: backslashes. It is not clear why this behavior is ever useful, but
339: the ANSI standard specifies it.
340:
341: @item #include @var{anything else}
1.1.1.7 root 342: @cindex computed @samp{#include}
1.1 root 343: This variant is called a @dfn{computed #include}. Any @samp{#include}
1.1.1.8 ! root 344: directive whose argument does not fit the above two forms is a computed
1.1 root 345: include. The text @var{anything else} is checked for macro calls,
346: which are expanded (@pxref{Macros}). When this is done, the result
347: must fit one of the above two variants---in particular, the expanded
348: text must in the end be surrounded by either quotes or angle braces.
349:
350: This feature allows you to define a macro which controls the file name
1.1.1.7 root 351: to be used at a later point in the program. One application of this is
352: to allow a site-specific configuration file for your program to specify
353: the names of the system include files to be used. This can help in
354: porting the program to various operating systems in which the necessary
355: system header files are found in different places.
1.1 root 356: @end table
357:
358: @node Include Operation, Once-Only, Include Syntax, Header Files
359: @subsection How @samp{#include} Works
360:
1.1.1.8 ! root 361: The @samp{#include} directive works by directing the C preprocessor to scan
1.1 root 362: the specified file as input before continuing with the rest of the current
363: file. The output from the preprocessor contains the output already
364: generated, followed by the output resulting from the included file,
365: followed by the output that comes from the text after the @samp{#include}
1.1.1.8 ! root 366: directive. For example, given a header file @file{header.h} as follows,
1.1.1.7 root 367:
368: @example
369: char *test ();
370: @end example
371:
372: @noindent
373: and a main program called @file{program.c} that uses the header file,
374: like this,
1.1 root 375:
376: @example
377: int x;
378: #include "header.h"
379:
380: main ()
381: @{
382: printf (test ());
383: @}
384: @end example
385:
386: @noindent
387: the output generated by the C preprocessor for @file{program.c} as input
388: would be
389:
390: @example
391: int x;
392: char *test ();
393:
394: main ()
395: @{
396: printf (test ());
397: @}
398: @end example
399:
400: Included files are not limited to declarations and macro definitions; those
401: are merely the typical uses. Any fragment of a C program can be included
402: from another file. The include file could even contain the beginning of a
403: statement that is concluded in the containing file, or the end of a
404: statement that was started in the including file. However, a comment or a
405: string or character constant may not start in the included file and finish
406: in the including file. An unterminated comment, string constant or
407: character constant in an included file is considered to end (with an error
408: message) at the end of the file.
409:
1.1.1.7 root 410: It is possible for a header file to begin or end a syntactic unit such
411: as a function definition, but that would be very confusing, so don't do
412: it.
413:
1.1.1.8 ! root 414: The line following the @samp{#include} directive is always treated as a
1.1 root 415: separate line by the C preprocessor even if the included file lacks a final
416: newline.
417:
418: @node Once-Only, Inheritance, Include Operation, Header Files
419: @subsection Once-Only Include Files
420: @cindex repeated inclusion
1.1.1.7 root 421: @cindex including just once
1.1 root 422:
423: Very often, one header file includes another. It can easily result that a
424: certain header file is included more than once. This may lead to errors,
425: if the header file defines structure types or typedefs, and is certainly
426: wasteful. Therefore, we often wish to prevent multiple inclusion of a
427: header file.
428:
429: The standard way to do this is to enclose the entire real contents of the
430: file in a conditional, like this:
431:
432: @example
1.1.1.7 root 433: #ifndef FILE_FOO_SEEN
434: #define FILE_FOO_SEEN
1.1 root 435:
436: @var{the entire file}
437:
1.1.1.7 root 438: #endif /* FILE_FOO_SEEN */
1.1 root 439: @end example
440:
1.1.1.7 root 441: The macro @code{FILE_FOO_SEEN} indicates that the file has been included
442: once already. In a user header file, the macro name should not begin
443: with @samp{_}. In a system header file, this name should begin with
444: @samp{__} to avoid conflicts with user programs. In any kind of header
445: file, the macro name should contain the name of the file and some
446: additional text, to avoid conflicts with other header files.
1.1 root 447:
448: The GNU C preprocessor is programmed to notice when a header file uses
449: this particular construct and handle it efficiently. If a header file
450: is contained entirely in a @samp{#ifndef} conditional, then it records
451: that fact. If a subsequent @samp{#include} specifies the same file,
452: and the macro in the @samp{#ifndef} is already defined, then the file
453: is entirely skipped, without even reading it.
454:
455: @findex #pragma once
1.1.1.8 ! root 456: There is also an explicit directive to tell the preprocessor that it need
1.1 root 457: not include a file more than once. This is called @samp{#pragma once},
458: and was used @emph{in addition to} the @samp{#ifndef} conditional around
459: the contents of the header file. @samp{#pragma once} is now obsolete
460: and should not be used at all.
461:
1.1.1.7 root 462: @findex #import
1.1 root 463: In the Objective C language, there is a variant of @samp{#include}
464: called @samp{#import} which includes a file, but does so at most once.
465: If you use @samp{#import} @emph{instead of} @samp{#include}, then you
466: don't need the conditionals inside the header file to prevent multiple
467: execution of the contents.
468:
1.1.1.7 root 469: @samp{#import} is obsolete because it is not a well designed feature.
1.1 root 470: It requires the users of a header file---the applications
471: programmers---to know that a certain header file should only be included
472: once. It is much better for the header file's implementor to write the
473: file so that users don't need to know this. Using @samp{#ifndef}
474: accomplishes this goal.
475:
476: @node Inheritance,, Once-Only, Header Files
1.1.1.7 root 477: @subsection Inheritance and Header Files
1.1 root 478: @cindex inheritance
479: @cindex overriding a header file
480:
481: @dfn{Inheritance} is what happens when one object or file derives some
482: of its contents by virtual copying from another object or file. In
483: the case of C header files, inheritance means that one header file
484: includes another header file and then replaces or adds something.
485:
486: If the inheriting header file and the base header file have different
487: names, then inheritance is straightforward: simply write @samp{#include
488: "@var{base}"} in the inheriting file.
489:
490: Sometimes it is necessary to give the inheriting file the same name as
491: the base file. This is less straightforward.
492:
493: For example, suppose an application program uses the system header file
494: @file{sys/signal.h}, but the version of @file{/usr/include/sys/signal.h}
495: on a particular system doesn't do what the application program expects.
1.1.1.3 root 496: It might be convenient to define a ``local'' version, perhaps under the
497: name @file{/usr/local/include/sys/signal.h}, to override or add to the
498: one supplied by the system.
1.1 root 499:
500: You can do this by using the option @samp{-I.} for compilation, and
501: writing a file @file{sys/signal.h} that does what the application
502: program expects. But making this file include the standard
503: @file{sys/signal.h} is not so easy---writing @samp{#include
504: <sys/signal.h>} in that file doesn't work, because it includes your own
505: version of the file, not the standard system version. Used in that file
506: itself, this leads to an infinite recursion and a fatal error in
507: compilation.
508:
509: @samp{#include </usr/include/sys/signal.h>} would find the proper file,
510: but that is not clean, since it makes an assumption about where the
511: system header file is found. This is bad for maintenance, since it
512: means that any change in where the system's header files are kept
513: requires a change somewhere else.
514:
515: @findex #include_next
1.1.1.2 root 516: The clean way to solve this problem is to use
1.1 root 517: @samp{#include_next}, which means, ``Include the @emph{next} file with
1.1.1.8 ! root 518: this name.'' This directive works like @samp{#include} except in
1.1 root 519: searching for the specified file: it starts searching the list of header
520: file directories @emph{after} the directory in which the current file
521: was found.
522:
1.1.1.2 root 523: Suppose you specify @samp{-I /usr/local/include}, and the list of
524: directories to search also includes @file{/usr/include}; and suppose that
525: both directories contain a file named @file{sys/signal.h}. Ordinary
526: @samp{#include <sys/signal.h>} finds the file under
527: @file{/usr/local/include}. If that file contains @samp{#include_next
528: <sys/signal.h>}, it starts searching after that directory, and finds the
529: file in @file{/usr/include}.
1.1 root 530:
531: @node Macros, Conditionals, Header Files, Top
532: @section Macros
533:
534: A macro is a sort of abbreviation which you can define once and then
535: use later. There are many complicated features associated with macros
536: in the C preprocessor.
537:
538: @menu
539: * Simple Macros:: Macros that always expand the same way.
540: * Argument Macros:: Macros that accept arguments that are substituted
541: into the macro expansion.
542: * Predefined:: Predefined macros that are always available.
543: * Stringification:: Macro arguments converted into string constants.
544: * Concatenation:: Building tokens from parts taken from macro arguments.
545: * Undefining:: Cancelling a macro's definition.
546: * Redefining:: Changing a macro's definition.
547: * Macro Pitfalls:: Macros can confuse the unwary. Here we explain
548: several common problems and strange features.
549: @end menu
550:
551: @node Simple Macros, Argument Macros, Macros, Macros
552: @subsection Simple Macros
1.1.1.7 root 553: @cindex simple macro
554: @cindex manifest constant
1.1 root 555:
556: A @dfn{simple macro} is a kind of abbreviation. It is a name which
557: stands for a fragment of code. Some people refer to these as
558: @dfn{manifest constants}.
559:
560: Before you can use a macro, you must @dfn{define} it explicitly with the
1.1.1.8 ! root 561: @samp{#define} directive. @samp{#define} is followed by the name of the
1.1 root 562: macro and then the code it should be an abbreviation for. For example,
563:
564: @example
565: #define BUFFER_SIZE 1020
566: @end example
567:
568: @noindent
569: defines a macro named @samp{BUFFER_SIZE} as an abbreviation for the text
1.1.1.8 ! root 570: @samp{1020}. If somewhere after this @samp{#define} directive there comes
1.1.1.7 root 571: a C statement of the form
1.1 root 572:
573: @example
574: foo = (char *) xmalloc (BUFFER_SIZE);
575: @end example
576:
577: @noindent
578: then the C preprocessor will recognize and @dfn{expand} the macro
579: @samp{BUFFER_SIZE}, resulting in
580:
581: @example
582: foo = (char *) xmalloc (1020);
583: @end example
584:
585: The use of all upper case for macro names is a standard convention.
586: Programs are easier to read when it is possible to tell at a glance which
587: names are macros.
588:
1.1.1.7 root 589: Normally, a macro definition must be a single line, like all C
1.1.1.8 ! root 590: preprocessing directives. (You can split a long macro definition
1.1.1.7 root 591: cosmetically with Backslash-Newline.) There is one exception: Newlines
592: can be included in the macro definition if within a string or character
593: constant. This is because it is not possible for a macro definition to
594: contain an unbalanced quote character; the definition automatically
595: extends to include the matching quote character that ends the string or
596: character constant. Comments within a macro definition may contain
597: Newlines, which make no difference since the comments are entirely
598: replaced with Spaces regardless of their contents.
1.1 root 599:
600: Aside from the above, there is no restriction on what can go in a macro
601: body. Parentheses need not balance. The body need not resemble valid C
1.1.1.7 root 602: code. (But if it does not, you may get error messages from the C
603: compiler when you use the macro.)
1.1 root 604:
605: The C preprocessor scans your program sequentially, so macro definitions
606: take effect at the place you write them. Therefore, the following input to
607: the C preprocessor
608:
609: @example
610: foo = X;
611: #define X 4
612: bar = X;
613: @end example
614:
615: @noindent
616: produces as output
617:
618: @example
619: foo = X;
620:
621: bar = 4;
622: @end example
623:
624: After the preprocessor expands a macro name, the macro's definition body is
625: appended to the front of the remaining input, and the check for macro calls
626: continues. Therefore, the macro body can contain calls to other macros.
627: For example, after
628:
629: @example
630: #define BUFSIZE 1020
631: #define TABLESIZE BUFSIZE
632: @end example
633:
634: @noindent
635: the name @samp{TABLESIZE} when used in the program would go through two
636: stages of expansion, resulting ultimately in @samp{1020}.
637:
638: This is not at all the same as defining @samp{TABLESIZE} to be @samp{1020}.
639: The @samp{#define} for @samp{TABLESIZE} uses exactly the body you
640: specify---in this case, @samp{BUFSIZE}---and does not check to see whether
641: it too is the name of a macro. It's only when you @emph{use} @samp{TABLESIZE}
642: that the result of its expansion is checked for more macro names.
643: @xref{Cascaded Macros}.
644:
645: @node Argument Macros, Predefined, Simple Macros, Macros
646: @subsection Macros with Arguments
1.1.1.7 root 647: @cindex macros with argument
648: @cindex arguments in macro definitions
649: @cindex function-like macro
1.1 root 650:
651: A simple macro always stands for exactly the same text, each time it is
652: used. Macros can be more flexible when they accept @dfn{arguments}.
653: Arguments are fragments of code that you supply each time the macro is
1.1.1.7 root 654: used. These fragments are included in the expansion of the macro
655: according to the directions in the macro definition. A macro that
656: accepts arguments is called a @dfn{function-like macro} because the
657: syntax for using it looks like a function call.
1.1 root 658:
1.1.1.7 root 659: @findex #define
1.1.1.8 ! root 660: To define a macro that uses arguments, you write a @samp{#define} directive
1.1 root 661: with a list of @dfn{argument names} in parentheses after the name of the
662: macro. The argument names may be any valid C identifiers, separated by
663: commas and optionally whitespace. The open-parenthesis must follow the
664: macro name immediately, with no space in between.
665:
666: For example, here is a macro that computes the minimum of two numeric
667: values, as it is defined in many C programs:
668:
669: @example
670: #define min(X, Y) ((X) < (Y) ? (X) : (Y))
671: @end example
672:
673: @noindent
674: (This is not the best way to define a ``minimum'' macro in GNU C.
675: @xref{Side Effects}, for more information.)
676:
677: To use a macro that expects arguments, you write the name of the macro
1.1.1.5 root 678: followed by a list of @dfn{actual arguments} in parentheses, separated by
1.1 root 679: commas. The number of actual arguments you give must match the number of
680: arguments the macro expects. Examples of use of the macro @samp{min}
681: include @samp{min (1, 2)} and @samp{min (x + 28, *p)}.
682:
683: The expansion text of the macro depends on the arguments you use.
684: Each of the argument names of the macro is replaced, throughout the
685: macro definition, with the corresponding actual argument. Using the
686: same macro @samp{min} defined above, @samp{min (1, 2)} expands into
687:
688: @example
689: ((1) < (2) ? (1) : (2))
690: @end example
691:
692: @noindent
693: where @samp{1} has been substituted for @samp{X} and @samp{2} for @samp{Y}.
694:
695: Likewise, @samp{min (x + 28, *p)} expands into
696:
697: @example
698: ((x + 28) < (*p) ? (x + 28) : (*p))
699: @end example
700:
701: Parentheses in the actual arguments must balance; a comma within
702: parentheses does not end an argument. However, there is no requirement
703: for brackets or braces to balance, and they do not prevent a comma from
704: separating arguments. Thus,
705:
706: @example
707: macro (array[x = y, x + 1])
708: @end example
709:
710: @noindent
711: passes two arguments to @code{macro}: @samp{array[x = y} and @samp{x +
712: 1]}. If you want to supply @samp{array[x = y, x + 1]} as an argument,
713: you must write it as @samp{array[(x = y, x + 1)]}, which is equivalent C
714: code.
715:
716: After the actual arguments are substituted into the macro body, the entire
717: result is appended to the front of the remaining input, and the check for
718: macro calls continues. Therefore, the actual arguments can contain calls
719: to other macros, either with or without arguments, or even to the same
720: macro. The macro body can also contain calls to other macros. For
721: example, @samp{min (min (a, b), c)} expands into this text:
722:
723: @example
724: ((((a) < (b) ? (a) : (b))) < (c)
725: ? (((a) < (b) ? (a) : (b)))
726: : (c))
727: @end example
728:
729: @noindent
730: (Line breaks shown here for clarity would not actually be generated.)
731:
1.1.1.7 root 732: @cindex blank macro arguments
733: @cindex space as macro argument
1.1.1.4 root 734: If a macro @code{foo} takes one argument, and you want to supply an
735: empty argument, you must write at least some whitespace between the
736: parentheses, like this: @samp{foo ( )}. Just @samp{foo ()} is providing
737: no arguments, which is an error if @code{foo} expects an argument. But
738: @samp{foo0 ()} is the correct way to call a macro defined to take zero
739: arguments, like this:
740:
741: @example
742: #define foo0() @dots{}
743: @end example
744:
1.1 root 745: If you use the macro name followed by something other than an
746: open-parenthesis (after ignoring any spaces, tabs and comments that
747: follow), it is not a call to the macro, and the preprocessor does not
748: change what you have written. Therefore, it is possible for the same name
749: to be a variable or function in your program as well as a macro, and you
750: can choose in each instance whether to refer to the macro (if an actual
751: argument list follows) or the variable or function (if an argument list
752: does not follow).
753:
754: Such dual use of one name could be confusing and should be avoided
755: except when the two meanings are effectively synonymous: that is, when the
756: name is both a macro and a function and the two have similar effects. You
757: can think of the name simply as a function; use of the name for purposes
758: other than calling it (such as, to take the address) will refer to the
759: function, while calls will expand the macro and generate better but
760: equivalent code. For example, you can use a function named @samp{min} in
761: the same source file that defines the macro. If you write @samp{&min} with
762: no argument list, you refer to the function. If you write @samp{min (x,
763: bb)}, with an argument list, the macro is expanded. If you write
764: @samp{(min) (a, bb)}, where the name @samp{min} is not followed by an
765: open-parenthesis, the macro is not expanded, so you wind up with a call to
766: the function @samp{min}.
767:
768: You may not define the same name as both a simple macro and a macro with
769: arguments.
770:
771: In the definition of a macro with arguments, the list of argument names
772: must follow the macro name immediately with no space in between. If there
773: is a space after the macro name, the macro is defined as taking no
1.1.1.4 root 774: arguments, and all the rest of the line is taken to be the expansion. The
1.1 root 775: reason for this is that it is often useful to define a macro that takes no
776: arguments and whose definition begins with an identifier in parentheses.
777: This rule about spaces makes it possible for you to do either this:
778:
779: @example
780: #define FOO(x) - 1 / (x)
781: @end example
782:
783: @noindent
784: (which defines @samp{FOO} to take an argument and expand into minus the
785: reciprocal of that argument) or this:
786:
787: @example
788: #define BAR (x) - 1 / (x)
789: @end example
790:
791: @noindent
792: (which defines @samp{BAR} to take no argument and always expand into
793: @samp{(x) - 1 / (x)}).
794:
795: Note that the @emph{uses} of a macro with arguments can have spaces before
796: the left parenthesis; it's the @emph{definition} where it matters whether
797: there is a space.
798:
799: @node Predefined, Stringification, Argument Macros, Macros
800: @subsection Predefined Macros
801:
802: @cindex predefined macros
803: Several simple macros are predefined. You can use them without giving
804: definitions for them. They fall into two classes: standard macros and
805: system-specific macros.
806:
807: @menu
808: * Standard Predefined:: Standard predefined macros.
809: * Nonstandard Predefined:: Nonstandard predefined macros.
810: @end menu
811:
812: @node Standard Predefined, Nonstandard Predefined, Predefined, Predefined
813: @subsubsection Standard Predefined Macros
1.1.1.7 root 814: @cindex standard predefined macros
1.1 root 815:
816: The standard predefined macros are available with the same meanings
817: regardless of the machine or operating system on which you are using GNU C.
818: Their names all start and end with double underscores. Those preceding
819: @code{__GNUC__} in this table are standardized by ANSI C; the rest are
820: GNU C extensions.
821:
822: @table @code
823: @item __FILE__
824: @findex __FILE__
825: This macro expands to the name of the current input file, in the form of
826: a C string constant. The precise name returned is the one that was
827: specified in @samp{#include} or as the input file name argument.
828:
829: @item __LINE__
830: @findex __LINE__
831: This macro expands to the current input line number, in the form of a
832: decimal integer constant. While we call it a predefined macro, it's
833: a pretty strange macro, since its ``definition'' changes with each
834: new line of source code.
835:
836: This and @samp{__FILE__} are useful in generating an error message to
837: report an inconsistency detected by the program; the message can state
838: the source line at which the inconsistency was detected. For example,
839:
840: @smallexample
841: fprintf (stderr, "Internal error: "
1.1.1.7 root 842: "negative string length "
1.1 root 843: "%d at %s, line %d.",
844: length, __FILE__, __LINE__);
845: @end smallexample
846:
1.1.1.8 ! root 847: A @samp{#include} directive changes the expansions of @samp{__FILE__}
1.1 root 848: and @samp{__LINE__} to correspond to the included file. At the end of
849: that file, when processing resumes on the input file that contained
1.1.1.8 ! root 850: the @samp{#include} directive, the expansions of @samp{__FILE__} and
1.1 root 851: @samp{__LINE__} revert to the values they had before the
852: @samp{#include} (but @samp{__LINE__} is then incremented by one as
853: processing moves to the line after the @samp{#include}).
854:
855: The expansions of both @samp{__FILE__} and @samp{__LINE__} are altered
1.1.1.8 ! root 856: if a @samp{#line} directive is used. @xref{Combining Sources}.
1.1.1.2 root 857:
1.1 root 858: @item __DATE__
859: @findex __DATE__
860: This macro expands to a string constant that describes the date on
861: which the preprocessor is being run. The string constant contains
862: eleven characters and looks like @samp{"Jan 29 1987"} or @w{@samp{"Apr
863: 1 1905"}}.
864:
865: @item __TIME__
866: @findex __TIME__
867: This macro expands to a string constant that describes the time at
868: which the preprocessor is being run. The string constant contains
869: eight characters and looks like @samp{"23:59:01"}.
870:
871: @item __STDC__
872: @findex __STDC__
873: This macro expands to the constant 1, to signify that this is ANSI
874: Standard C. (Whether that is actually true depends on what C compiler
875: will operate on the output from the preprocessor.)
876:
1.1.1.8 ! root 877: @item __STDC_VERSION__
! 878: @findex __STDC_VERSION__
! 879: This macro expands to the C Standard's version number,
! 880: a long integer constant of the form @samp{@var{yyyy}@var{mm}L}
! 881: where @var{yyyy} and @var{mm} are the year and month of the Standard version.
! 882: This signifies which version of the C Standard the preprocessor conforms to.
! 883: Like @samp{__STDC__}, whether this version number is accurate
! 884: for the entire implementation depends on what C compiler
! 885: will operate on the output from the preprocessor.
! 886:
1.1 root 887: @item __GNUC__
1.1.1.7 root 888: @findex __GNUC__
1.1 root 889: This macro is defined if and only if this is GNU C. This macro is
1.1.1.7 root 890: defined only when the entire GNU C compiler is in use; if you invoke the
891: preprocessor directly, @samp{__GNUC__} is undefined. The value
892: identifies the major version number of GNU CC (@samp{1} for GNU CC
893: version 1, which is now obsolete, and @samp{2} for version 2).
1.1 root 894:
1.1.1.8 ! root 895: @item __GNUC_MINOR__
! 896: @findex __GNUC_MINOR__
! 897: The macro contains the minor version number of the compiler. This can
! 898: be used to work around differences between different releases of the
! 899: compiler (for example, if gcc 2.6.3 is known to support a feature, you
! 900: can test for @code{__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6)}).
! 901: The last number, @samp{3} in the
! 902: example above, denotes the bugfix level of the compiler; no macro
! 903: contains this value.
! 904:
1.1.1.5 root 905: @item __GNUG__
1.1.1.7 root 906: @findex __GNUG__
1.1.1.5 root 907: The GNU C compiler defines this when the compilation language is
908: C++; use @samp{__GNUG__} to distinguish between GNU C and GNU
909: C++.
910:
911: @item __cplusplus
1.1.1.7 root 912: @findex __cplusplus
1.1.1.5 root 913: The draft ANSI standard for C++ used to require predefining this
914: variable. Though it is no longer required, GNU C++ continues to define
915: it, as do other popular C++ compilers. You can use @samp{__cplusplus}
916: to test whether a header is compiled by a C compiler or a C++ compiler.
917:
1.1 root 918: @item __STRICT_ANSI__
1.1.1.7 root 919: @findex __STRICT_ANSI__
1.1 root 920: This macro is defined if and only if the @samp{-ansi} switch was
921: specified when GNU C was invoked. Its definition is the null string.
922: This macro exists primarily to direct certain GNU header files not to
923: define certain traditional Unix constructs which are incompatible with
924: ANSI C.
925:
1.1.1.3 root 926: @item __BASE_FILE__
927: @findex __BASE_FILE__
928: This macro expands to the name of the main input file, in the form
929: of a C string constant. This is the source file that was specified
930: as an argument when the C compiler was invoked.
931:
1.1.1.8 ! root 932: @item __INCLUDE_LEVEL__
! 933: @findex __INCLUDE_LEVEL_
! 934: This macro expands to a decimal integer constant that represents the
! 935: depth of nesting in include files. The value of this macro is
! 936: incremented on every @samp{#include} directive and decremented at every
! 937: end of file. For input files specified by command line arguments,
! 938: the nesting level is zero.
! 939:
1.1 root 940: @item __VERSION__
1.1.1.7 root 941: @findex __VERSION__
1.1 root 942: This macro expands to a string which describes the version number of
943: GNU C. The string is normally a sequence of decimal numbers separated
1.1.1.7 root 944: by periods, such as @samp{"2.6.0"}. The only reasonable use of this
1.1 root 945: macro is to incorporate it into a string constant.
946:
947: @item __OPTIMIZE__
1.1.1.7 root 948: @findex __OPTIMIZE__
1.1 root 949: This macro is defined in optimizing compilations. It causes certain
950: GNU header files to define alternative macro definitions for some
951: system library functions. It is unwise to refer to or test the
952: definition of this macro unless you make very sure that programs will
953: execute with the same effect regardless.
954:
955: @item __CHAR_UNSIGNED__
1.1.1.7 root 956: @findex __CHAR_UNSIGNED__
1.1 root 957: This macro is defined if and only if the data type @code{char} is
958: unsigned on the target machine. It exists to cause the standard
959: header file @file{limit.h} to work correctly. It is bad practice
960: to refer to this macro yourself; instead, refer to the standard
961: macros defined in @file{limit.h}. The preprocessor uses
962: this macro to determine whether or not to sign-extend large character
1.1.1.8 ! root 963: constants written in octal; see @ref{#if Directive,,The @samp{#if} Directive}.
! 964:
! 965: @item __REGISTER_PREFIX__
! 966: @findex __REGISTER_PREFIX__
! 967: This macro expands to a string describing the prefix applied to cpu
! 968: registers in assembler code. It can be used to write assembler code
! 969: that is usable in multiple environments. For example, in the
! 970: @samp{m68k-aout} environment it expands to the string @samp{""},
! 971: but in the @samp{m68k-coff} environment it expands to the string
! 972: @samp{"%"}.
! 973:
! 974: @item __USER_LABEL_PREFIX__
! 975: @findex __USER_LABEL_PREFIX__
! 976: This macro expands to a string describing the prefix applied to
! 977: user generated labels in assembler code. It can be used to write
! 978: assembler code that is usable in multiple environments.
! 979: For example, in the @samp{m68k-aout} environment it expands to the
! 980: string @samp{"_"}, but in the @samp{m68k-coff} environment it expands
! 981: to the string @samp{""}.
1.1 root 982: @end table
983:
984: @node Nonstandard Predefined,, Standard Predefined, Predefined
985: @subsubsection Nonstandard Predefined Macros
986:
987: The C preprocessor normally has several predefined macros that vary between
988: machines because their purpose is to indicate what type of system and
989: machine is in use. This manual, being for all systems and machines, cannot
990: tell you exactly what their names are; instead, we offer a list of some
991: typical ones. You can use @samp{cpp -dM} to see the values of
1.1.1.7 root 992: predefined macros; see @ref{Invocation}.
1.1 root 993:
994: Some nonstandard predefined macros describe the operating system in use,
995: with more or less specificity. For example,
996:
997: @table @code
998: @item unix
999: @findex unix
1000: @samp{unix} is normally predefined on all Unix systems.
1001:
1002: @item BSD
1003: @findex BSD
1004: @samp{BSD} is predefined on recent versions of Berkeley Unix
1005: (perhaps only in version 4.3).
1006: @end table
1007:
1008: Other nonstandard predefined macros describe the kind of CPU, with more or
1009: less specificity. For example,
1010:
1011: @table @code
1012: @item vax
1013: @findex vax
1014: @samp{vax} is predefined on Vax computers.
1015:
1016: @item mc68000
1017: @findex mc68000
1018: @samp{mc68000} is predefined on most computers whose CPU is a Motorola
1019: 68000, 68010 or 68020.
1020:
1021: @item m68k
1022: @findex m68k
1023: @samp{m68k} is also predefined on most computers whose CPU is a 68000,
1024: 68010 or 68020; however, some makers use @samp{mc68000} and some use
1025: @samp{m68k}. Some predefine both names. What happens in GNU C
1026: depends on the system you are using it on.
1027:
1028: @item M68020
1029: @findex M68020
1030: @samp{M68020} has been observed to be predefined on some systems that
1031: use 68020 CPUs---in addition to @samp{mc68000} and @samp{m68k}, which
1032: are less specific.
1033:
1034: @item _AM29K
1035: @findex _AM29K
1036: @itemx _AM29000
1037: @findex _AM29000
1038: Both @samp{_AM29K} and @samp{_AM29000} are predefined for the AMD 29000
1039: CPU family.
1040:
1041: @item ns32000
1042: @findex ns32000
1043: @samp{ns32000} is predefined on computers which use the National
1044: Semiconductor 32000 series CPU.
1045: @end table
1046:
1047: Yet other nonstandard predefined macros describe the manufacturer of
1048: the system. For example,
1049:
1050: @table @code
1051: @item sun
1052: @findex sun
1053: @samp{sun} is predefined on all models of Sun computers.
1054:
1055: @item pyr
1056: @findex pyr
1057: @samp{pyr} is predefined on all models of Pyramid computers.
1058:
1059: @item sequent
1060: @findex sequent
1061: @samp{sequent} is predefined on all models of Sequent computers.
1062: @end table
1063:
1064: These predefined symbols are not only nonstandard, they are contrary to the
1065: ANSI standard because their names do not start with underscores.
1066: Therefore, the option @samp{-ansi} inhibits the definition of these
1067: symbols.
1068:
1069: This tends to make @samp{-ansi} useless, since many programs depend on the
1070: customary nonstandard predefined symbols. Even system header files check
1071: them and will generate incorrect declarations if they do not find the names
1072: that are expected. You might think that the header files supplied for the
1073: Uglix computer would not need to test what machine they are running on,
1074: because they can simply assume it is the Uglix; but often they do, and they
1075: do so using the customary names. As a result, very few C programs will
1076: compile with @samp{-ansi}. We intend to avoid such problems on the GNU
1077: system.
1078:
1079: What, then, should you do in an ANSI C program to test the type of machine
1080: it will run on?
1081:
1082: GNU C offers a parallel series of symbols for this purpose, whose names
1083: are made from the customary ones by adding @samp{__} at the beginning
1.1.1.3 root 1084: and end. Thus, the symbol @code{__vax__} would be available on a Vax,
1.1 root 1085: and so on.
1086:
1087: The set of nonstandard predefined names in the GNU C preprocessor is
1088: controlled (when @code{cpp} is itself compiled) by the macro
1089: @samp{CPP_PREDEFINES}, which should be a string containing @samp{-D}
1090: options, separated by spaces. For example, on the Sun 3, we use the
1091: following definition:
1092:
1093: @example
1094: #define CPP_PREDEFINES "-Dmc68000 -Dsun -Dunix -Dm68k"
1095: @end example
1096:
1097: @noindent
1098: This macro is usually specified in @file{tm.h}.
1099:
1100: @node Stringification, Concatenation, Predefined, Macros
1101: @subsection Stringification
1102:
1103: @cindex stringification
1104: @dfn{Stringification} means turning a code fragment into a string constant
1105: whose contents are the text for the code fragment. For example,
1106: stringifying @samp{foo (z)} results in @samp{"foo (z)"}.
1107:
1108: In the C preprocessor, stringification is an option available when macro
1109: arguments are substituted into the macro definition. In the body of the
1110: definition, when an argument name appears, the character @samp{#} before
1111: the name specifies stringification of the corresponding actual argument
1112: when it is substituted at that point in the definition. The same argument
1113: may be substituted in other places in the definition without
1114: stringification if the argument name appears in those places with no
1115: @samp{#}.
1116:
1117: Here is an example of a macro definition that uses stringification:
1118:
1119: @smallexample
1.1.1.7 root 1120: @group
1.1 root 1121: #define WARN_IF(EXP) \
1122: do @{ if (EXP) \
1123: fprintf (stderr, "Warning: " #EXP "\n"); @} \
1124: while (0)
1.1.1.7 root 1125: @end group
1.1 root 1126: @end smallexample
1127:
1128: @noindent
1129: Here the actual argument for @samp{EXP} is substituted once as given,
1130: into the @samp{if} statement, and once as stringified, into the
1131: argument to @samp{fprintf}. The @samp{do} and @samp{while (0)} are
1132: a kludge to make it possible to write @samp{WARN_IF (@var{arg});},
1133: which the resemblance of @samp{WARN_IF} to a function would make
1.1.1.7 root 1134: C programmers want to do; see @ref{Swallow Semicolon}.
1.1 root 1135:
1136: The stringification feature is limited to transforming one macro argument
1137: into one string constant: there is no way to combine the argument with
1138: other text and then stringify it all together. But the example above shows
1139: how an equivalent result can be obtained in ANSI Standard C using the
1140: feature that adjacent string constants are concatenated as one string
1.1.1.4 root 1141: constant. The preprocessor stringifies the actual value of @samp{EXP}
1.1 root 1142: into a separate string constant, resulting in text like
1143:
1144: @smallexample
1.1.1.7 root 1145: @group
1.1 root 1146: do @{ if (x == 0) \
1147: fprintf (stderr, "Warning: " "x == 0" "\n"); @} \
1148: while (0)
1.1.1.7 root 1149: @end group
1.1 root 1150: @end smallexample
1151:
1152: @noindent
1153: but the C compiler then sees three consecutive string constants and
1154: concatenates them into one, producing effectively
1155:
1156: @smallexample
1157: do @{ if (x == 0) \
1158: fprintf (stderr, "Warning: x == 0\n"); @} \
1159: while (0)
1160: @end smallexample
1161:
1162: Stringification in C involves more than putting doublequote characters
1163: around the fragment; it is necessary to put backslashes in front of all
1164: doublequote characters, and all backslashes in string and character
1165: constants, in order to get a valid C string constant with the proper
1166: contents. Thus, stringifying @samp{p = "foo\n";} results in @samp{"p =
1167: \"foo\\n\";"}. However, backslashes that are not inside of string or
1168: character constants are not duplicated: @samp{\n} by itself stringifies to
1169: @samp{"\n"}.
1170:
1171: Whitespace (including comments) in the text being stringified is handled
1172: according to precise rules. All leading and trailing whitespace is ignored.
1173: Any sequence of whitespace in the middle of the text is converted to
1174: a single space in the stringified result.
1175:
1176: @node Concatenation, Undefining, Stringification, Macros
1177: @subsection Concatenation
1178: @cindex concatenation
1.1.1.7 root 1179: @cindex @samp{##}
1.1 root 1180: @dfn{Concatenation} means joining two strings into one. In the context
1181: of macro expansion, concatenation refers to joining two lexical units
1182: into one longer one. Specifically, an actual argument to the macro can be
1183: concatenated with another actual argument or with fixed text to produce
1184: a longer name. The longer name might be the name of a function,
1185: variable or type, or a C keyword; it might even be the name of another
1186: macro, in which case it will be expanded.
1187:
1188: When you define a macro, you request concatenation with the special
1189: operator @samp{##} in the macro body. When the macro is called,
1190: after actual arguments are substituted, all @samp{##} operators are
1191: deleted, and so is any whitespace next to them (including whitespace
1192: that was part of an actual argument). The result is to concatenate
1193: the syntactic tokens on either side of the @samp{##}.
1194:
1195: Consider a C program that interprets named commands. There probably needs
1196: to be a table of commands, perhaps an array of structures declared as
1197: follows:
1198:
1199: @example
1200: struct command
1201: @{
1202: char *name;
1203: void (*function) ();
1204: @};
1205:
1206: struct command commands[] =
1207: @{
1208: @{ "quit", quit_command@},
1209: @{ "help", help_command@},
1210: @dots{}
1211: @};
1212: @end example
1213:
1214: It would be cleaner not to have to give each command name twice, once in
1215: the string constant and once in the function name. A macro which takes the
1216: name of a command as an argument can make this unnecessary. The string
1217: constant can be created with stringification, and the function name by
1218: concatenating the argument with @samp{_command}. Here is how it is done:
1219:
1220: @example
1221: #define COMMAND(NAME) @{ #NAME, NAME ## _command @}
1222:
1223: struct command commands[] =
1224: @{
1225: COMMAND (quit),
1226: COMMAND (help),
1227: @dots{}
1228: @};
1229: @end example
1230:
1231: The usual case of concatenation is concatenating two names (or a name and a
1232: number) into a longer name. But this isn't the only valid case. It is
1233: also possible to concatenate two numbers (or a number and a name, such as
1234: @samp{1.5} and @samp{e3}) into a number. Also, multi-character operators
1235: such as @samp{+=} can be formed by concatenation. In some cases it is even
1236: possible to piece together a string constant. However, two pieces of text
1237: that don't together form a valid lexical unit cannot be concatenated. For
1238: example, concatenation with @samp{x} on one side and @samp{+} on the other
1239: is not meaningful because those two characters can't fit together in any
1240: lexical unit of C. The ANSI standard says that such attempts at
1241: concatenation are undefined, but in the GNU C preprocessor it is well
1242: defined: it puts the @samp{x} and @samp{+} side by side with no particular
1243: special results.
1244:
1245: Keep in mind that the C preprocessor converts comments to whitespace before
1246: macros are even considered. Therefore, you cannot create a comment by
1247: concatenating @samp{/} and @samp{*}: the @samp{/*} sequence that starts a
1248: comment is not a lexical unit, but rather the beginning of a ``long'' space
1249: character. Also, you can freely use comments next to a @samp{##} in a
1250: macro definition, or in actual arguments that will be concatenated, because
1251: the comments will be converted to spaces at first sight, and concatenation
1252: will later discard the spaces.
1253:
1254: @node Undefining, Redefining, Concatenation, Macros
1255: @subsection Undefining Macros
1256:
1257: @cindex undefining macros
1258: To @dfn{undefine} a macro means to cancel its definition. This is done
1.1.1.8 ! root 1259: with the @samp{#undef} directive. @samp{#undef} is followed by the macro
1.1 root 1260: name to be undefined.
1261:
1262: Like definition, undefinition occurs at a specific point in the source
1263: file, and it applies starting from that point. The name ceases to be a
1264: macro name, and from that point on it is treated by the preprocessor as if
1265: it had never been a macro name.
1266:
1267: For example,
1268:
1269: @example
1270: #define FOO 4
1271: x = FOO;
1272: #undef FOO
1273: x = FOO;
1274: @end example
1275:
1276: @noindent
1277: expands into
1278:
1279: @example
1280: x = 4;
1281:
1282: x = FOO;
1283: @end example
1284:
1285: @noindent
1286: In this example, @samp{FOO} had better be a variable or function as well
1287: as (temporarily) a macro, in order for the result of the expansion to be
1288: valid C code.
1289:
1.1.1.8 ! root 1290: The same form of @samp{#undef} directive will cancel definitions with
1.1 root 1291: arguments or definitions that don't expect arguments. The @samp{#undef}
1.1.1.8 ! root 1292: directive has no effect when used on a name not currently defined as a macro.
1.1 root 1293:
1294: @node Redefining, Macro Pitfalls, Undefining, Macros
1295: @subsection Redefining Macros
1296:
1297: @cindex redefining macros
1298: @dfn{Redefining} a macro means defining (with @samp{#define}) a name that
1299: is already defined as a macro.
1300:
1301: A redefinition is trivial if the new definition is transparently identical
1302: to the old one. You probably wouldn't deliberately write a trivial
1303: redefinition, but they can happen automatically when a header file is
1304: included more than once (@pxref{Header Files}), so they are accepted
1305: silently and without effect.
1306:
1307: Nontrivial redefinition is considered likely to be an error, so
1308: it provokes a warning message from the preprocessor. However, sometimes it
1309: is useful to change the definition of a macro in mid-compilation. You can
1310: inhibit the warning by undefining the macro with @samp{#undef} before the
1311: second definition.
1312:
1313: In order for a redefinition to be trivial, the new definition must
1314: exactly match the one already in effect, with two possible exceptions:
1315:
1316: @itemize @bullet
1317: @item
1318: Whitespace may be added or deleted at the beginning or the end.
1319:
1320: @item
1321: Whitespace may be changed in the middle (but not inside strings).
1322: However, it may not be eliminated entirely, and it may not be added
1323: where there was no whitespace at all.
1324: @end itemize
1325:
1326: Recall that a comment counts as whitespace.
1327:
1328: @node Macro Pitfalls,, Redefining, Macros
1329: @subsection Pitfalls and Subtleties of Macros
1.1.1.7 root 1330: @cindex problems with macros
1331: @cindex pitfalls of macros
1.1 root 1332:
1333: In this section we describe some special rules that apply to macros and
1334: macro expansion, and point out certain cases in which the rules have
1335: counterintuitive consequences that you must watch out for.
1336:
1337: @menu
1338: * Misnesting:: Macros can contain unmatched parentheses.
1339: * Macro Parentheses:: Why apparently superfluous parentheses
1340: may be necessary to avoid incorrect grouping.
1341: * Swallow Semicolon:: Macros that look like functions
1342: but expand into compound statements.
1343: * Side Effects:: Unsafe macros that cause trouble when
1344: arguments contain side effects.
1345: * Self-Reference:: Macros whose definitions use the macros' own names.
1346: * Argument Prescan:: Actual arguments are checked for macro calls
1347: before they are substituted.
1348: * Cascaded Macros:: Macros whose definitions use other macros.
1.1.1.4 root 1349: * Newlines in Args:: Sometimes line numbers get confused.
1.1 root 1350: @end menu
1351:
1352: @node Misnesting, Macro Parentheses, Macro Pitfalls, Macro Pitfalls
1353: @subsubsection Improperly Nested Constructs
1354:
1355: Recall that when a macro is called with arguments, the arguments are
1356: substituted into the macro body and the result is checked, together with
1357: the rest of the input file, for more macro calls.
1358:
1359: It is possible to piece together a macro call coming partially from the
1360: macro body and partially from the actual arguments. For example,
1361:
1362: @example
1363: #define double(x) (2*(x))
1364: #define call_with_1(x) x(1)
1365: @end example
1366:
1367: @noindent
1368: would expand @samp{call_with_1 (double)} into @samp{(2*(1))}.
1369:
1370: Macro definitions do not have to have balanced parentheses. By writing an
1371: unbalanced open parenthesis in a macro body, it is possible to create a
1372: macro call that begins inside the macro body but ends outside of it. For
1373: example,
1374:
1375: @example
1376: #define strange(file) fprintf (file, "%s %d",
1377: @dots{}
1378: strange(stderr) p, 35)
1379: @end example
1380:
1381: @noindent
1382: This bizarre example expands to @samp{fprintf (stderr, "%s %d", p, 35)}!
1383:
1384: @node Macro Parentheses, Swallow Semicolon, Misnesting, Macro Pitfalls
1385: @subsubsection Unintended Grouping of Arithmetic
1.1.1.7 root 1386: @cindex parentheses in macro bodies
1.1 root 1387:
1388: You may have noticed that in most of the macro definition examples shown
1389: above, each occurrence of a macro argument name had parentheses around it.
1390: In addition, another pair of parentheses usually surround the entire macro
1391: definition. Here is why it is best to write macros that way.
1392:
1393: Suppose you define a macro as follows,
1394:
1395: @example
1396: #define ceil_div(x, y) (x + y - 1) / y
1397: @end example
1398:
1399: @noindent
1.1.1.4 root 1400: whose purpose is to divide, rounding up. (One use for this operation is
1401: to compute how many @samp{int} objects are needed to hold a certain
1402: number of @samp{char} objects.) Then suppose it is used as follows:
1.1 root 1403:
1404: @example
1405: a = ceil_div (b & c, sizeof (int));
1406: @end example
1407:
1408: @noindent
1409: This expands into
1410:
1411: @example
1412: a = (b & c + sizeof (int) - 1) / sizeof (int);
1413: @end example
1414:
1415: @noindent
1416: which does not do what is intended. The operator-precedence rules of
1417: C make it equivalent to this:
1418:
1419: @example
1420: a = (b & (c + sizeof (int) - 1)) / sizeof (int);
1421: @end example
1422:
1423: @noindent
1424: But what we want is this:
1425:
1426: @example
1427: a = ((b & c) + sizeof (int) - 1)) / sizeof (int);
1428: @end example
1429:
1430: @noindent
1431: Defining the macro as
1432:
1433: @example
1434: #define ceil_div(x, y) ((x) + (y) - 1) / (y)
1435: @end example
1436:
1437: @noindent
1438: provides the desired result.
1439:
1440: However, unintended grouping can result in another way. Consider
1441: @samp{sizeof ceil_div(1, 2)}. That has the appearance of a C expression
1442: that would compute the size of the type of @samp{ceil_div (1, 2)}, but in
1443: fact it means something very different. Here is what it expands to:
1444:
1445: @example
1446: sizeof ((1) + (2) - 1) / (2)
1447: @end example
1448:
1449: @noindent
1450: This would take the size of an integer and divide it by two. The precedence
1451: rules have put the division outside the @samp{sizeof} when it was intended
1452: to be inside.
1453:
1454: Parentheses around the entire macro definition can prevent such problems.
1455: Here, then, is the recommended way to define @samp{ceil_div}:
1456:
1457: @example
1458: #define ceil_div(x, y) (((x) + (y) - 1) / (y))
1459: @end example
1460:
1461: @node Swallow Semicolon, Side Effects, Macro Parentheses, Macro Pitfalls
1462: @subsubsection Swallowing the Semicolon
1463:
1464: @cindex semicolons (after macro calls)
1465: Often it is desirable to define a macro that expands into a compound
1466: statement. Consider, for example, the following macro, that advances a
1467: pointer (the argument @samp{p} says where to find it) across whitespace
1468: characters:
1469:
1470: @example
1471: #define SKIP_SPACES (p, limit) \
1472: @{ register char *lim = (limit); \
1473: while (p != lim) @{ \
1474: if (*p++ != ' ') @{ \
1475: p--; break; @}@}@}
1476: @end example
1477:
1478: @noindent
1479: Here Backslash-Newline is used to split the macro definition, which must
1480: be a single line, so that it resembles the way such C code would be
1481: laid out if not part of a macro definition.
1482:
1483: A call to this macro might be @samp{SKIP_SPACES (p, lim)}. Strictly
1484: speaking, the call expands to a compound statement, which is a complete
1485: statement with no need for a semicolon to end it. But it looks like a
1486: function call. So it minimizes confusion if you can use it like a function
1487: call, writing a semicolon afterward, as in @samp{SKIP_SPACES (p, lim);}
1488:
1489: But this can cause trouble before @samp{else} statements, because the
1490: semicolon is actually a null statement. Suppose you write
1491:
1492: @example
1493: if (*p != 0)
1494: SKIP_SPACES (p, lim);
1495: else @dots{}
1496: @end example
1497:
1498: @noindent
1499: The presence of two statements---the compound statement and a null
1500: statement---in between the @samp{if} condition and the @samp{else}
1501: makes invalid C code.
1502:
1503: The definition of the macro @samp{SKIP_SPACES} can be altered to solve
1504: this problem, using a @samp{do @dots{} while} statement. Here is how:
1505:
1506: @example
1507: #define SKIP_SPACES (p, limit) \
1508: do @{ register char *lim = (limit); \
1509: while (p != lim) @{ \
1510: if (*p++ != ' ') @{ \
1511: p--; break; @}@}@} \
1512: while (0)
1513: @end example
1514:
1515: Now @samp{SKIP_SPACES (p, lim);} expands into
1516:
1517: @example
1518: do @{@dots{}@} while (0);
1519: @end example
1520:
1521: @noindent
1522: which is one statement.
1523:
1524: @node Side Effects, Self-Reference, Swallow Semicolon, Macro Pitfalls
1525: @subsubsection Duplication of Side Effects
1526:
1527: @cindex side effects (in macro arguments)
1528: @cindex unsafe macros
1529: Many C programs define a macro @samp{min}, for ``minimum'', like this:
1530:
1531: @example
1532: #define min(X, Y) ((X) < (Y) ? (X) : (Y))
1533: @end example
1534:
1535: When you use this macro with an argument containing a side effect,
1536: as shown here,
1537:
1538: @example
1539: next = min (x + y, foo (z));
1540: @end example
1541:
1542: @noindent
1543: it expands as follows:
1544:
1545: @example
1546: next = ((x + y) < (foo (z)) ? (x + y) : (foo (z)));
1547: @end example
1548:
1549: @noindent
1550: where @samp{x + y} has been substituted for @samp{X} and @samp{foo (z)}
1551: for @samp{Y}.
1552:
1553: The function @samp{foo} is used only once in the statement as it appears
1554: in the program, but the expression @samp{foo (z)} has been substituted
1555: twice into the macro expansion. As a result, @samp{foo} might be called
1556: two times when the statement is executed. If it has side effects or
1557: if it takes a long time to compute, the results might not be what you
1558: intended. We say that @samp{min} is an @dfn{unsafe} macro.
1559:
1560: The best solution to this problem is to define @samp{min} in a way that
1561: computes the value of @samp{foo (z)} only once. The C language offers no
1562: standard way to do this, but it can be done with GNU C extensions as
1563: follows:
1564:
1565: @example
1566: #define min(X, Y) \
1567: (@{ typeof (X) __x = (X), __y = (Y); \
1568: (__x < __y) ? __x : __y; @})
1569: @end example
1570:
1571: If you do not wish to use GNU C extensions, the only solution is to be
1572: careful when @emph{using} the macro @samp{min}. For example, you can
1573: calculate the value of @samp{foo (z)}, save it in a variable, and use that
1574: variable in @samp{min}:
1575:
1576: @example
1577: #define min(X, Y) ((X) < (Y) ? (X) : (Y))
1578: @dots{}
1579: @{
1580: int tem = foo (z);
1581: next = min (x + y, tem);
1582: @}
1583: @end example
1584:
1585: @noindent
1.1.1.3 root 1586: (where we assume that @samp{foo} returns type @samp{int}).
1.1 root 1587:
1588: @node Self-Reference, Argument Prescan, Side Effects, Macro Pitfalls
1589: @subsubsection Self-Referential Macros
1590:
1591: @cindex self-reference
1592: A @dfn{self-referential} macro is one whose name appears in its definition.
1593: A special feature of ANSI Standard C is that the self-reference is not
1594: considered a macro call. It is passed into the preprocessor output
1595: unchanged.
1596:
1597: Let's consider an example:
1598:
1599: @example
1600: #define foo (4 + foo)
1601: @end example
1602:
1603: @noindent
1604: where @samp{foo} is also a variable in your program.
1605:
1606: Following the ordinary rules, each reference to @samp{foo} will expand into
1607: @samp{(4 + foo)}; then this will be rescanned and will expand into @samp{(4
1608: + (4 + foo))}; and so on until it causes a fatal error (memory full) in the
1609: preprocessor.
1610:
1611: However, the special rule about self-reference cuts this process short
1612: after one step, at @samp{(4 + foo)}. Therefore, this macro definition
1613: has the possibly useful effect of causing the program to add 4 to
1614: the value of @samp{foo} wherever @samp{foo} is referred to.
1615:
1616: In most cases, it is a bad idea to take advantage of this feature. A
1617: person reading the program who sees that @samp{foo} is a variable will
1618: not expect that it is a macro as well. The reader will come across the
1619: identifier @samp{foo} in the program and think its value should be that
1620: of the variable @samp{foo}, whereas in fact the value is four greater.
1621:
1622: The special rule for self-reference applies also to @dfn{indirect}
1623: self-reference. This is the case where a macro @var{x} expands to use a
1.1.1.4 root 1624: macro @samp{y}, and the expansion of @samp{y} refers to the macro
1625: @samp{x}. The resulting reference to @samp{x} comes indirectly from the
1626: expansion of @samp{x}, so it is a self-reference and is not further
1627: expanded. Thus, after
1.1 root 1628:
1629: @example
1630: #define x (4 + y)
1631: #define y (2 * x)
1632: @end example
1633:
1634: @noindent
1635: @samp{x} would expand into @samp{(4 + (2 * x))}. Clear?
1636:
1637: But suppose @samp{y} is used elsewhere, not from the definition of @samp{x}.
1638: Then the use of @samp{x} in the expansion of @samp{y} is not a self-reference
1639: because @samp{x} is not ``in progress''. So it does expand. However,
1640: the expansion of @samp{x} contains a reference to @samp{y}, and that
1641: is an indirect self-reference now because @samp{y} is ``in progress''.
1642: The result is that @samp{y} expands to @samp{(2 * (4 + y))}.
1643:
1644: It is not clear that this behavior would ever be useful, but it is specified
1645: by the ANSI C standard, so you may need to understand it.
1646:
1647: @node Argument Prescan, Cascaded Macros, Self-Reference, Macro Pitfalls
1648: @subsubsection Separate Expansion of Macro Arguments
1.1.1.7 root 1649: @cindex expansion of arguments
1650: @cindex macro argument expansion
1651: @cindex prescan of macro arguments
1.1 root 1652:
1653: We have explained that the expansion of a macro, including the substituted
1654: actual arguments, is scanned over again for macro calls to be expanded.
1655:
1656: What really happens is more subtle: first each actual argument text is scanned
1657: separately for macro calls. Then the results of this are substituted into
1658: the macro body to produce the macro expansion, and the macro expansion
1659: is scanned again for macros to expand.
1660:
1661: The result is that the actual arguments are scanned @emph{twice} to expand
1662: macro calls in them.
1663:
1664: Most of the time, this has no effect. If the actual argument contained
1665: any macro calls, they are expanded during the first scan. The result
1666: therefore contains no macro calls, so the second scan does not change it.
1667: If the actual argument were substituted as given, with no prescan,
1668: the single remaining scan would find the same macro calls and produce
1669: the same results.
1670:
1671: You might expect the double scan to change the results when a
1672: self-referential macro is used in an actual argument of another macro
1673: (@pxref{Self-Reference}): the self-referential macro would be expanded once
1674: in the first scan, and a second time in the second scan. But this is not
1675: what happens. The self-references that do not expand in the first scan are
1676: marked so that they will not expand in the second scan either.
1677:
1678: The prescan is not done when an argument is stringified or concatenated.
1679: Thus,
1680:
1681: @example
1682: #define str(s) #s
1683: #define foo 4
1684: str (foo)
1685: @end example
1686:
1687: @noindent
1688: expands to @samp{"foo"}. Once more, prescan has been prevented from
1689: having any noticeable effect.
1690:
1691: More precisely, stringification and concatenation use the argument as
1692: written, in un-prescanned form. The same actual argument would be used in
1693: prescanned form if it is substituted elsewhere without stringification or
1694: concatenation.
1695:
1696: @example
1697: #define str(s) #s lose(s)
1698: #define foo 4
1699: str (foo)
1700: @end example
1701:
1702: expands to @samp{"foo" lose(4)}.
1703:
1704: You might now ask, ``Why mention the prescan, if it makes no difference?
1705: And why not skip it and make the preprocessor faster?'' The answer is
1706: that the prescan does make a difference in three special cases:
1707:
1708: @itemize @bullet
1709: @item
1710: Nested calls to a macro.
1711:
1712: @item
1713: Macros that call other macros that stringify or concatenate.
1714:
1715: @item
1716: Macros whose expansions contain unshielded commas.
1717: @end itemize
1718:
1719: We say that @dfn{nested} calls to a macro occur when a macro's actual
1720: argument contains a call to that very macro. For example, if @samp{f}
1721: is a macro that expects one argument, @samp{f (f (1))} is a nested
1722: pair of calls to @samp{f}. The desired expansion is made by
1723: expanding @samp{f (1)} and substituting that into the definition of
1724: @samp{f}. The prescan causes the expected result to happen.
1725: Without the prescan, @samp{f (1)} itself would be substituted as
1726: an actual argument, and the inner use of @samp{f} would appear
1727: during the main scan as an indirect self-reference and would not
1728: be expanded. Here, the prescan cancels an undesirable side effect
1729: (in the medical, not computational, sense of the term) of the special
1730: rule for self-referential macros.
1731:
1732: But prescan causes trouble in certain other cases of nested macro calls.
1733: Here is an example:
1734:
1735: @example
1736: #define foo a,b
1737: #define bar(x) lose(x)
1738: #define lose(x) (1 + (x))
1739:
1740: bar(foo)
1741: @end example
1742:
1743: @noindent
1744: We would like @samp{bar(foo)} to turn into @samp{(1 + (foo))}, which
1745: would then turn into @samp{(1 + (a,b))}. But instead, @samp{bar(foo)}
1746: expands into @samp{lose(a,b)}, and you get an error because @code{lose}
1747: requires a single argument. In this case, the problem is easily solved
1748: by the same parentheses that ought to be used to prevent misnesting of
1749: arithmetic operations:
1750:
1751: @example
1752: #define foo (a,b)
1753: #define bar(x) lose((x))
1754: @end example
1755:
1756: The problem is more serious when the operands of the macro are not
1757: expressions; for example, when they are statements. Then parentheses
1758: are unacceptable because they would make for invalid C code:
1759:
1760: @example
1761: #define foo @{ int a, b; @dots{} @}
1762: @end example
1763:
1764: @noindent
1765: In GNU C you can shield the commas using the @samp{(@{@dots{}@})}
1766: construct which turns a compound statement into an expression:
1767:
1768: @example
1769: #define foo (@{ int a, b; @dots{} @})
1770: @end example
1771:
1772: Or you can rewrite the macro definition to avoid such commas:
1773:
1774: @example
1775: #define foo @{ int a; int b; @dots{} @}
1776: @end example
1777:
1778: There is also one case where prescan is useful. It is possible
1779: to use prescan to expand an argument and then stringify it---if you use
1780: two levels of macros. Let's add a new macro @samp{xstr} to the
1781: example shown above:
1782:
1783: @example
1784: #define xstr(s) str(s)
1785: #define str(s) #s
1786: #define foo 4
1787: xstr (foo)
1788: @end example
1789:
1790: This expands into @samp{"4"}, not @samp{"foo"}. The reason for the
1791: difference is that the argument of @samp{xstr} is expanded at prescan
1792: (because @samp{xstr} does not specify stringification or concatenation of
1793: the argument). The result of prescan then forms the actual argument for
1794: @samp{str}. @samp{str} uses its argument without prescan because it
1795: performs stringification; but it cannot prevent or undo the prescanning
1796: already done by @samp{xstr}.
1797:
1.1.1.4 root 1798: @node Cascaded Macros, Newlines in Args, Argument Prescan, Macro Pitfalls
1.1 root 1799: @subsubsection Cascaded Use of Macros
1800:
1801: @cindex cascaded macros
1802: @cindex macro body uses macro
1803: A @dfn{cascade} of macros is when one macro's body contains a reference
1804: to another macro. This is very common practice. For example,
1805:
1806: @example
1807: #define BUFSIZE 1020
1808: #define TABLESIZE BUFSIZE
1809: @end example
1810:
1811: This is not at all the same as defining @samp{TABLESIZE} to be @samp{1020}.
1812: The @samp{#define} for @samp{TABLESIZE} uses exactly the body you
1813: specify---in this case, @samp{BUFSIZE}---and does not check to see whether
1814: it too is the name of a macro.
1815:
1816: It's only when you @emph{use} @samp{TABLESIZE} that the result of its expansion
1817: is checked for more macro names.
1818:
1819: This makes a difference if you change the definition of @samp{BUFSIZE}
1820: at some point in the source file. @samp{TABLESIZE}, defined as shown,
1821: will always expand using the definition of @samp{BUFSIZE} that is
1822: currently in effect:
1823:
1824: @example
1825: #define BUFSIZE 1020
1826: #define TABLESIZE BUFSIZE
1827: #undef BUFSIZE
1828: #define BUFSIZE 37
1829: @end example
1830:
1831: @noindent
1.1.1.7 root 1832: Now @samp{TABLESIZE} expands (in two stages) to @samp{37}. (The
1833: @samp{#undef} is to prevent any warning about the nontrivial
1834: redefinition of @code{BUFSIZE}.)
1.1 root 1835:
1.1.1.4 root 1836: @node Newlines in Args,, Cascaded Macros, Macro Pitfalls
1837: @subsection Newlines in Macro Arguments
1.1.1.7 root 1838: @cindex newlines in macro arguments
1.1.1.4 root 1839:
1840: Traditional macro processing carries forward all newlines in macro
1841: arguments into the expansion of the macro. This means that, if some of
1842: the arguments are substituted more than once, or not at all, or out of
1843: order, newlines can be duplicated, lost, or moved around within the
1844: expansion. If the expansion consists of multiple statements, then the
1845: effect is to distort the line numbers of some of these statements. The
1846: result can be incorrect line numbers, in error messages or displayed in
1847: a debugger.
1848:
1849: The GNU C preprocessor operating in ANSI C mode adjusts appropriately
1850: for multiple use of an argument---the first use expands all the
1851: newlines, and subsequent uses of the same argument produce no newlines.
1852: But even in this mode, it can produce incorrect line numbering if
1853: arguments are used out of order, or not used at all.
1854:
1855: Here is an example illustrating this problem:
1856:
1857: @example
1858: #define ignore_second_arg(a,b,c) a; c
1859:
1860: ignore_second_arg (foo (),
1861: ignored (),
1862: syntax error);
1863: @end example
1864:
1865: @noindent
1866: The syntax error triggered by the tokens @samp{syntax error} results
1867: in an error message citing line four, even though the statement text
1868: comes from line five.
1869:
1.1 root 1870: @node Conditionals, Combining Sources, Macros, Top
1871: @section Conditionals
1872:
1873: @cindex conditionals
1.1.1.8 ! root 1874: In a macro processor, a @dfn{conditional} is a directive that allows a part
1.1 root 1875: of the program to be ignored during compilation, on some conditions.
1876: In the C preprocessor, a conditional can test either an arithmetic expression
1877: or whether a name is defined as a macro.
1878:
1879: A conditional in the C preprocessor resembles in some ways an @samp{if}
1880: statement in C, but it is important to understand the difference between
1881: them. The condition in an @samp{if} statement is tested during the execution
1882: of your program. Its purpose is to allow your program to behave differently
1883: from run to run, depending on the data it is operating on. The condition
1.1.1.8 ! root 1884: in a preprocessing conditional directive is tested when your program is compiled.
1.1 root 1885: Its purpose is to allow different code to be included in the program depending
1886: on the situation at the time of compilation.
1887:
1888: @menu
1889: * Uses: Conditional Uses. What conditionals are for.
1890: * Syntax: Conditional Syntax. How conditionals are written.
1891: * Deletion: Deleted Code. Making code into a comment.
1892: * Macros: Conditionals-Macros. Why conditionals are used with macros.
1.1.1.4 root 1893: * Assertions:: How and why to use assertions.
1.1.1.8 ! root 1894: * Errors: #error Directive. Detecting inconsistent compilation parameters.
1.1 root 1895: @end menu
1896:
1.1.1.4 root 1897: @node Conditional Uses
1.1 root 1898: @subsection Why Conditionals are Used
1899:
1900: Generally there are three kinds of reason to use a conditional.
1901:
1902: @itemize @bullet
1903: @item
1904: A program may need to use different code depending on the machine or
1905: operating system it is to run on. In some cases the code for one
1906: operating system may be erroneous on another operating system; for
1907: example, it might refer to library routines that do not exist on the
1908: other system. When this happens, it is not enough to avoid executing
1909: the invalid code: merely having it in the program makes it impossible
1.1.1.8 ! root 1910: to link the program and run it. With a preprocessing conditional, the
1.1 root 1911: offending code can be effectively excised from the program when it is
1912: not valid.
1913:
1914: @item
1915: You may want to be able to compile the same source file into two
1916: different programs. Sometimes the difference between the programs is
1917: that one makes frequent time-consuming consistency checks on its
1.1.1.7 root 1918: intermediate data, or prints the values of those data for debugging,
1919: while the other does not.
1.1 root 1920:
1921: @item
1922: A conditional whose condition is always false is a good way to exclude
1923: code from the program but keep it as a sort of comment for future
1924: reference.
1925: @end itemize
1926:
1927: Most simple programs that are intended to run on only one machine will
1.1.1.8 ! root 1928: not need to use preprocessing conditionals.
1.1 root 1929:
1.1.1.4 root 1930: @node Conditional Syntax
1.1 root 1931: @subsection Syntax of Conditionals
1932:
1933: @findex #if
1934: A conditional in the C preprocessor begins with a @dfn{conditional
1.1.1.8 ! root 1935: directive}: @samp{#if}, @samp{#ifdef} or @samp{#ifndef}.
1.1 root 1936: @xref{Conditionals-Macros}, for information on @samp{#ifdef} and
1937: @samp{#ifndef}; only @samp{#if} is explained here.
1938:
1939: @menu
1.1.1.8 ! root 1940: * If: #if Directive. Basic conditionals using @samp{#if} and @samp{#endif}.
! 1941: * Else: #else Directive. Including some text if the condition fails.
! 1942: * Elif: #elif Directive. Testing several alternative possibilities.
1.1 root 1943: @end menu
1944:
1.1.1.8 ! root 1945: @node #if Directive
! 1946: @subsubsection The @samp{#if} Directive
1.1 root 1947:
1.1.1.8 ! root 1948: The @samp{#if} directive in its simplest form consists of
1.1 root 1949:
1950: @example
1951: #if @var{expression}
1952: @var{controlled text}
1953: #endif /* @var{expression} */
1954: @end example
1955:
1956: The comment following the @samp{#endif} is not required, but it is a good
1957: practice because it helps people match the @samp{#endif} to the
1958: corresponding @samp{#if}. Such comments should always be used, except in
1959: short conditionals that are not nested. In fact, you can put anything at
1960: all after the @samp{#endif} and it will be ignored by the GNU C preprocessor,
1961: but only comments are acceptable in ANSI Standard C.
1962:
1963: @var{expression} is a C expression of integer type, subject to stringent
1964: restrictions. It may contain
1965:
1966: @itemize @bullet
1967: @item
1968: Integer constants, which are all regarded as @code{long} or
1969: @code{unsigned long}.
1970:
1971: @item
1972: Character constants, which are interpreted according to the character
1973: set and conventions of the machine and operating system on which the
1974: preprocessor is running. The GNU C preprocessor uses the C data type
1975: @samp{char} for these character constants; therefore, whether some
1976: character codes are negative is determined by the C compiler used to
1977: compile the preprocessor. If it treats @samp{char} as signed, then
1978: character codes large enough to set the sign bit will be considered
1979: negative; otherwise, no character code is considered negative.
1980:
1981: @item
1982: Arithmetic operators for addition, subtraction, multiplication,
1.1.1.7 root 1983: division, bitwise operations, shifts, comparisons, and logical
1984: operations (@samp{&&} and @samp{||}).
1.1 root 1985:
1986: @item
1987: Identifiers that are not macros, which are all treated as zero(!).
1988:
1989: @item
1990: Macro calls. All macro calls in the expression are expanded before
1991: actual computation of the expression's value begins.
1992: @end itemize
1993:
1994: Note that @samp{sizeof} operators and @code{enum}-type values are not allowed.
1995: @code{enum}-type values, like all other identifiers that are not taken
1996: as macro calls and expanded, are treated as zero.
1997:
1998: The @var{controlled text} inside of a conditional can include
1.1.1.8 ! root 1999: preprocessing directives. Then the directives inside the conditional are
1.1 root 2000: obeyed only if that branch of the conditional succeeds. The text can
1.1.1.4 root 2001: also contain other conditional groups. However, the @samp{#if} and
1.1.1.8 ! root 2002: @samp{#endif} directives must balance.
1.1 root 2003:
1.1.1.8 ! root 2004: @node #else Directive
! 2005: @subsubsection The @samp{#else} Directive
1.1 root 2006:
2007: @findex #else
1.1.1.8 ! root 2008: The @samp{#else} directive can be added to a conditional to provide
1.1 root 2009: alternative text to be used if the condition is false. This is what
2010: it looks like:
2011:
2012: @example
2013: #if @var{expression}
2014: @var{text-if-true}
2015: #else /* Not @var{expression} */
2016: @var{text-if-false}
2017: #endif /* Not @var{expression} */
2018: @end example
2019:
1.1.1.3 root 2020: If @var{expression} is nonzero, and thus the @var{text-if-true} is
2021: active, then @samp{#else} acts like a failing conditional and the
1.1 root 2022: @var{text-if-false} is ignored. Contrariwise, if the @samp{#if}
2023: conditional fails, the @var{text-if-false} is considered included.
2024:
1.1.1.8 ! root 2025: @node #elif Directive
! 2026: @subsubsection The @samp{#elif} Directive
1.1 root 2027:
2028: @findex #elif
2029: One common case of nested conditionals is used to check for more than two
2030: possible alternatives. For example, you might have
2031:
2032: @example
2033: #if X == 1
2034: @dots{}
2035: #else /* X != 1 */
2036: #if X == 2
2037: @dots{}
2038: #else /* X != 2 */
2039: @dots{}
2040: #endif /* X != 2 */
2041: #endif /* X != 1 */
2042: @end example
2043:
1.1.1.8 ! root 2044: Another conditional directive, @samp{#elif}, allows this to be abbreviated
1.1 root 2045: as follows:
2046:
2047: @example
2048: #if X == 1
2049: @dots{}
2050: #elif X == 2
2051: @dots{}
2052: #else /* X != 2 and X != 1*/
2053: @dots{}
2054: #endif /* X != 2 and X != 1*/
2055: @end example
2056:
2057: @samp{#elif} stands for ``else if''. Like @samp{#else}, it goes in the
2058: middle of a @samp{#if}-@samp{#endif} pair and subdivides it; it does not
2059: require a matching @samp{#endif} of its own. Like @samp{#if}, the
1.1.1.8 ! root 2060: @samp{#elif} directive includes an expression to be tested.
1.1 root 2061:
2062: The text following the @samp{#elif} is processed only if the original
1.1.1.4 root 2063: @samp{#if}-condition failed and the @samp{#elif} condition succeeds.
2064: More than one @samp{#elif} can go in the same @samp{#if}-@samp{#endif}
2065: group. Then the text after each @samp{#elif} is processed only if the
2066: @samp{#elif} condition succeeds after the original @samp{#if} and any
1.1.1.8 ! root 2067: previous @samp{#elif} directives within it have failed. @samp{#else} is
1.1.1.4 root 2068: equivalent to @samp{#elif 1}, and @samp{#else} is allowed after any
1.1.1.8 ! root 2069: number of @samp{#elif} directives, but @samp{#elif} may not follow
1.1.1.4 root 2070: @samp{#else}.
1.1 root 2071:
1.1.1.4 root 2072: @node Deleted Code
1.1 root 2073: @subsection Keeping Deleted Code for Future Reference
1.1.1.7 root 2074: @cindex commenting out code
1.1 root 2075:
2076: If you replace or delete a part of the program but want to keep the old
1.1.1.7 root 2077: code around as a comment for future reference, the easy way to do this
2078: is to put @samp{#if 0} before it and @samp{#endif} after it. This is
2079: better than using comment delimiters @samp{/*} and @samp{*/} since those
2080: won't work if the code already contains comments (C comments do not
2081: nest).
1.1 root 2082:
2083: This works even if the code being turned off contains conditionals, but
2084: they must be entire conditionals (balanced @samp{#if} and @samp{#endif}).
2085:
1.1.1.7 root 2086: Conversely, do not use @samp{#if 0} for comments which are not C code.
2087: Use the comment delimiters @samp{/*} and @samp{*/} instead. The
2088: interior of @samp{#if 0} must consist of complete tokens; in particular,
2089: singlequote characters must balance. But comments often contain
2090: unbalanced singlequote characters (known in English as apostrophes).
2091: These confuse @samp{#if 0}. They do not confuse @samp{/*}.
2092:
1.1.1.4 root 2093: @node Conditionals-Macros
1.1 root 2094: @subsection Conditionals and Macros
2095:
1.1.1.4 root 2096: Conditionals are useful in connection with macros or assertions, because
2097: those are the only ways that an expression's value can vary from one
1.1.1.8 ! root 2098: compilation to another. A @samp{#if} directive whose expression uses no
1.1.1.4 root 2099: macros or assertions is equivalent to @samp{#if 1} or @samp{#if 0}; you
2100: might as well determine which one, by computing the value of the
2101: expression yourself, and then simplify the program.
1.1 root 2102:
2103: For example, here is a conditional that tests the expression
2104: @samp{BUFSIZE == 1020}, where @samp{BUFSIZE} must be a macro.
2105:
2106: @example
2107: #if BUFSIZE == 1020
2108: printf ("Large buffers!\n");
2109: #endif /* BUFSIZE is large */
2110: @end example
2111:
1.1.1.4 root 2112: (Programmers often wish they could test the size of a variable or data
2113: type in @samp{#if}, but this does not work. The preprocessor does not
2114: understand @code{sizeof}, or typedef names, or even the type keywords
2115: such as @code{int}.)
2116:
1.1 root 2117: @findex defined
1.1.1.4 root 2118: The special operator @samp{defined} is used in @samp{#if} expressions to
2119: test whether a certain name is defined as a macro. Either @samp{defined
2120: @var{name}} or @samp{defined (@var{name})} is an expression whose value
2121: is 1 if @var{name} is defined as macro at the current point in the
2122: program, and 0 otherwise. For the @samp{defined} operator it makes no
2123: difference what the definition of the macro is; all that matters is
2124: whether there is a definition. Thus, for example,@refill
1.1 root 2125:
2126: @example
2127: #if defined (vax) || defined (ns16000)
2128: @end example
2129:
2130: @noindent
1.1.1.7 root 2131: would succeed if either of the names @samp{vax} and @samp{ns16000} is
2132: defined as a macro. You can test the same condition using assertions
2133: (@pxref{Assertions}), like this:
1.1.1.4 root 2134:
2135: @example
2136: #if #cpu (vax) || #cpu (ns16000)
2137: @end example
1.1 root 2138:
2139: If a macro is defined and later undefined with @samp{#undef},
1.1.1.4 root 2140: subsequent use of the @samp{defined} operator returns 0, because
1.1 root 2141: the name is no longer defined. If the macro is defined again with
2142: another @samp{#define}, @samp{defined} will recommence returning 1.
2143:
2144: @findex #ifdef
2145: @findex #ifndef
1.1.1.7 root 2146: Conditionals that test whether just one name is defined are very common,
1.1.1.8 ! root 2147: so there are two special short conditional directives for this case.
1.1 root 2148:
2149: @table @code
2150: @item #ifdef @var{name}
2151: is equivalent to @samp{#if defined (@var{name})}.
2152:
2153: @item #ifndef @var{name}
2154: is equivalent to @samp{#if ! defined (@var{name})}.
2155: @end table
2156:
2157: Macro definitions can vary between compilations for several reasons.
2158:
2159: @itemize @bullet
2160: @item
2161: Some macros are predefined on each kind of machine. For example, on a
2162: Vax, the name @samp{vax} is a predefined macro. On other machines, it
2163: would not be defined.
2164:
2165: @item
2166: Many more macros are defined by system header files. Different
2167: systems and machines define different macros, or give them different
2168: values. It is useful to test these macros with conditionals to avoid
2169: using a system feature on a machine where it is not implemented.
2170:
2171: @item
2172: Macros are a common way of allowing users to customize a program for
2173: different machines or applications. For example, the macro
2174: @samp{BUFSIZE} might be defined in a configuration file for your
2175: program that is included as a header file in each source file. You
1.1.1.8 ! root 2176: would use @samp{BUFSIZE} in a preprocessing conditional in order to
1.1 root 2177: generate different code depending on the chosen configuration.
2178:
2179: @item
2180: Macros can be defined or undefined with @samp{-D} and @samp{-U}
2181: command options when you compile the program. You can arrange to
2182: compile the same source file into two different programs by choosing
2183: a macro name to specify which program you want, writing conditionals
2184: to test whether or how this macro is defined, and then controlling
2185: the state of the macro with compiler command options.
2186: @xref{Invocation}.
2187: @end itemize
2188:
1.1.1.4 root 2189: @ifinfo
2190: Assertions are usually predefined, but can be defined with preprocessor
1.1.1.8 ! root 2191: directives or command-line options.
1.1.1.4 root 2192: @end ifinfo
2193:
2194: @node Assertions
2195: @subsection Assertions
2196:
2197: @cindex assertions
2198: @dfn{Assertions} are a more systematic alternative to macros in writing
2199: conditionals to test what sort of computer or system the compiled
2200: program will run on. Assertions are usually predefined, but you can
1.1.1.8 ! root 2201: define them with preprocessing directives or command-line options.
1.1.1.4 root 2202:
2203: @cindex predicates
2204: The macros traditionally used to describe the type of target are not
2205: classified in any way according to which question they answer; they may
2206: indicate a hardware architecture, a particular hardware model, an
2207: operating system, a particular version of an operating system, or
2208: specific configuration options. These are jumbled together in a single
2209: namespace. In contrast, each assertion consists of a named question and
2210: an answer. The question is usually called the @dfn{predicate}.
2211: An assertion looks like this:
2212:
2213: @example
2214: #@var{predicate} (@var{answer})
2215: @end example
2216:
2217: @noindent
2218: You must use a properly formed identifier for @var{predicate}. The
2219: value of @var{answer} can be any sequence of words; all characters are
2220: significant except for leading and trailing whitespace, and differences
2221: in internal whitespace sequences are ignored. Thus, @samp{x + y} is
2222: different from @samp{x+y} but equivalent to @samp{x + y}. @samp{)} is
2223: not allowed in an answer.
2224:
2225: @cindex testing predicates
2226: Here is a conditional to test whether the answer @var{answer} is asserted
2227: for the predicate @var{predicate}:
2228:
2229: @example
2230: #if #@var{predicate} (@var{answer})
2231: @end example
2232:
2233: @noindent
2234: There may be more than one answer asserted for a given predicate. If
2235: you omit the answer, you can test whether @emph{any} answer is asserted
2236: for @var{predicate}:
2237:
2238: @example
2239: #if #@var{predicate}
2240: @end example
2241:
1.1.1.7 root 2242: @findex #system
2243: @findex #machine
2244: @findex #cpu
1.1.1.4 root 2245: Most of the time, the assertions you test will be predefined assertions.
2246: GNU C provides three predefined predicates: @code{system}, @code{cpu},
2247: and @code{machine}. @code{system} is for assertions about the type of
2248: software, @code{cpu} describes the type of computer architecture, and
2249: @code{machine} gives more information about the computer. For example,
2250: on a GNU system, the following assertions would be true:
2251:
2252: @example
2253: #system (gnu)
2254: #system (mach)
2255: #system (mach 3)
2256: #system (mach 3.@var{subversion})
2257: #system (hurd)
2258: #system (hurd @var{version})
2259: @end example
2260:
2261: @noindent
1.1.1.6 root 2262: and perhaps others. The alternatives with
1.1.1.4 root 2263: more or less version information let you ask more or less detailed
2264: questions about the type of system software.
2265:
1.1.1.6 root 2266: On a Unix system, you would find @code{#system (unix)} and perhaps one of:
2267: @code{#system (aix)}, @code{#system (bsd)}, @code{#system (hpux)},
2268: @code{#system (lynx)}, @code{#system (mach)}, @code{#system (posix)},
2269: @code{#system (svr3)}, @code{#system (svr4)}, or @code{#system (xpg4)}
2270: with possible version numbers following.
2271:
2272: Other values for @code{system} are @code{#system (mvs)}
2273: and @code{#system (vms)}.
2274:
1.1.1.4 root 2275: @strong{Portability note:} Many Unix C compilers provide only one answer
2276: for the @code{system} assertion: @code{#system (unix)}, if they support
2277: assertions at all. This is less than useful.
2278:
2279: An assertion with a multi-word answer is completely different from several
2280: assertions with individual single-word answers. For example, the presence
2281: of @code{system (mach 3.0)} does not mean that @code{system (3.0)} is true.
2282: It also does not directly imply @code{system (mach)}, but in GNU C, that
2283: last will normally be asserted as well.
2284:
1.1.1.6 root 2285: The current list of possible assertion values for @code{cpu} is:
2286: @code{#cpu (a29k)}, @code{#cpu (alpha)}, @code{#cpu (arm)}, @code{#cpu
2287: (clipper)}, @code{#cpu (convex)}, @code{#cpu (elxsi)}, @code{#cpu
2288: (tron)}, @code{#cpu (h8300)}, @code{#cpu (i370)}, @code{#cpu (i386)},
2289: @code{#cpu (i860)}, @code{#cpu (i960)}, @code{#cpu (m68k)}, @code{#cpu
2290: (m88k)}, @code{#cpu (mips)}, @code{#cpu (ns32k)}, @code{#cpu (hppa)},
2291: @code{#cpu (pyr)}, @code{#cpu (ibm032)}, @code{#cpu (rs6000)},
2292: @code{#cpu (sh)}, @code{#cpu (sparc)}, @code{#cpu (spur)}, @code{#cpu
2293: (tahoe)}, @code{#cpu (vax)}, @code{#cpu (we32000)}.
2294:
1.1.1.4 root 2295: @findex #assert
2296: You can create assertions within a C program using @samp{#assert}, like
2297: this:
2298:
2299: @example
2300: #assert @var{predicate} (@var{answer})
2301: @end example
2302:
2303: @noindent
2304: (Note the absence of a @samp{#} before @var{predicate}.)
2305:
2306: @cindex unassert
2307: @cindex assertions, undoing
2308: @cindex retracting assertions
2309: @findex #unassert
2310: Each time you do this, you assert a new true answer for @var{predicate}.
2311: Asserting one answer does not invalidate previously asserted answers;
2312: they all remain true. The only way to remove an assertion is with
2313: @samp{#unassert}. @samp{#unassert} has the same syntax as
2314: @samp{#assert}. You can also remove all assertions about
2315: @var{predicate} like this:
2316:
2317: @example
2318: #unassert @var{predicate}
2319: @end example
2320:
2321: You can also add or cancel assertions using command options
2322: when you run @code{gcc} or @code{cpp}. @xref{Invocation}.
2323:
1.1.1.8 ! root 2324: @node #error Directive
! 2325: @subsection The @samp{#error} and @samp{#warning} Directives
1.1 root 2326:
2327: @findex #error
1.1.1.8 ! root 2328: The directive @samp{#error} causes the preprocessor to report a fatal
1.1 root 2329: error. The rest of the line that follows @samp{#error} is used as the
2330: error message.
2331:
2332: You would use @samp{#error} inside of a conditional that detects a
2333: combination of parameters which you know the program does not properly
2334: support. For example, if you know that the program will not run
2335: properly on a Vax, you might write
2336:
2337: @smallexample
1.1.1.7 root 2338: @group
2339: #ifdef __vax__
1.1 root 2340: #error Won't work on Vaxen. See comments at get_last_object.
2341: #endif
1.1.1.7 root 2342: @end group
1.1 root 2343: @end smallexample
2344:
2345: @noindent
2346: @xref{Nonstandard Predefined}, for why this works.
2347:
2348: If you have several configuration parameters that must be set up by
2349: the installation in a consistent way, you can use conditionals to detect
2350: an inconsistency and report it with @samp{#error}. For example,
2351:
2352: @smallexample
2353: #if HASH_TABLE_SIZE % 2 == 0 || HASH_TABLE_SIZE % 3 == 0 \
2354: || HASH_TABLE_SIZE % 5 == 0
2355: #error HASH_TABLE_SIZE should not be divisible by a small prime
2356: #endif
2357: @end smallexample
2358:
2359: @findex #warning
1.1.1.8 ! root 2360: The directive @samp{#warning} is like the directive @samp{#error}, but causes
1.1 root 2361: the preprocessor to issue a warning and continue preprocessing. The rest of
2362: the line that follows @samp{#warning} is used as the warning message.
2363:
2364: You might use @samp{#warning} in obsolete header files, with a message
2365: directing the user to the header file which should be used instead.
2366:
1.1.1.8 ! root 2367: @node Combining Sources, Other Directives, Conditionals, Top
1.1 root 2368: @section Combining Source Files
2369:
2370: @cindex line control
2371: One of the jobs of the C preprocessor is to inform the C compiler of where
2372: each line of C code came from: which source file and which line number.
2373:
2374: C code can come from multiple source files if you use @samp{#include};
2375: both @samp{#include} and the use of conditionals and macros can cause
2376: the line number of a line in the preprocessor output to be different
2377: from the line's number in the original source file. You will appreciate
2378: the value of making both the C compiler (in error messages) and symbolic
2379: debuggers such as GDB use the line numbers in your source file.
2380:
1.1.1.8 ! root 2381: The C preprocessor builds on this feature by offering a directive by which
1.1 root 2382: you can control the feature explicitly. This is useful when a file for
2383: input to the C preprocessor is the output from another program such as the
2384: @code{bison} parser generator, which operates on another file that is the
2385: true source file. Parts of the output from @code{bison} are generated from
2386: scratch, other parts come from a standard parser file. The rest are copied
2387: nearly verbatim from the source file, but their line numbers in the
2388: @code{bison} output are not the same as their original line numbers.
2389: Naturally you would like compiler error messages and symbolic debuggers to
2390: know the original source file and line number of each line in the
1.1.1.3 root 2391: @code{bison} input.
1.1 root 2392:
1.1.1.7 root 2393: @findex #line
1.1.1.8 ! root 2394: @code{bison} arranges this by writing @samp{#line} directives into the output
! 2395: file. @samp{#line} is a directive that specifies the original line number
1.1 root 2396: and source file name for subsequent input in the current preprocessor input
2397: file. @samp{#line} has three variants:
2398:
2399: @table @code
2400: @item #line @var{linenum}
2401: Here @var{linenum} is a decimal integer constant. This specifies that
2402: the line number of the following line of input, in its original source file,
2403: was @var{linenum}.
2404:
2405: @item #line @var{linenum} @var{filename}
2406: Here @var{linenum} is a decimal integer constant and @var{filename}
2407: is a string constant. This specifies that the following line of input
2408: came originally from source file @var{filename} and its line number there
2409: was @var{linenum}. Keep in mind that @var{filename} is not just a
2410: file name; it is surrounded by doublequote characters so that it looks
2411: like a string constant.
2412:
2413: @item #line @var{anything else}
2414: @var{anything else} is checked for macro calls, which are expanded.
2415: The result should be a decimal integer constant followed optionally
2416: by a string constant, as described above.
2417: @end table
2418:
1.1.1.8 ! root 2419: @samp{#line} directives alter the results of the @samp{__FILE__} and
1.1 root 2420: @samp{__LINE__} predefined macros from that point on. @xref{Standard
2421: Predefined}.
2422:
1.1.1.4 root 2423: The output of the preprocessor (which is the input for the rest of the
1.1.1.8 ! root 2424: compiler) contains directives that look much like @samp{#line} directives.
1.1.1.4 root 2425: They start with just @samp{#} instead of @samp{#line}, but this is
2426: followed by a line number and file name as in @samp{#line}. @xref{Output}.
2427:
1.1.1.8 ! root 2428: @node Other Directives, Output, Combining Sources, Top
! 2429: @section Miscellaneous Preprocessing Directives
1.1 root 2430:
1.1.1.8 ! root 2431: @cindex null directive
! 2432: This section describes three additional preprocessing directives. They are
1.1 root 2433: not very useful, but are mentioned for completeness.
2434:
1.1.1.8 ! root 2435: The @dfn{null directive} consists of a @samp{#} followed by a Newline, with
! 2436: only whitespace (including comments) in between. A null directive is
! 2437: understood as a preprocessing directive but has no effect on the preprocessor
! 2438: output. The primary significance of the existence of the null directive is
1.1 root 2439: that an input line consisting of just a @samp{#} will produce no output,
2440: rather than a line of output containing just a @samp{#}. Supposedly
2441: some old C programs contain such lines.
2442:
1.1.1.7 root 2443: @findex #pragma
1.1.1.8 ! root 2444: The ANSI standard specifies that the @samp{#pragma} directive has an
1.1 root 2445: arbitrary, implementation-defined effect. In the GNU C preprocessor,
1.1.1.8 ! root 2446: @samp{#pragma} directives are not used, except for @samp{#pragma once}
1.1.1.5 root 2447: (@pxref{Once-Only}). However, they are left in the preprocessor output,
2448: so they are available to the compilation pass.
1.1 root 2449:
1.1.1.7 root 2450: @findex #ident
1.1.1.8 ! root 2451: The @samp{#ident} directive is supported for compatibility with certain
1.1 root 2452: other systems. It is followed by a line of text. On some systems, the
2453: text is copied into a special place in the object file; on most systems,
1.1.1.8 ! root 2454: the text is ignored and this directive has no effect. Typically
1.1 root 2455: @samp{#ident} is only used in header files supplied with those systems
2456: where it is meaningful.
2457:
1.1.1.8 ! root 2458: @node Output, Invocation, Other Directives, Top
1.1 root 2459: @section C Preprocessor Output
2460:
2461: @cindex output format
2462: The output from the C preprocessor looks much like the input, except
1.1.1.8 ! root 2463: that all preprocessing directive lines have been replaced with blank lines
1.1 root 2464: and all comments with spaces. Whitespace within a line is not altered;
2465: however, a space is inserted after the expansions of most macro calls.
2466:
2467: Source file name and line number information is conveyed by lines of
2468: the form
2469:
2470: @example
1.1.1.4 root 2471: # @var{linenum} @var{filename} @var{flags}
1.1 root 2472: @end example
2473:
2474: @noindent
2475: which are inserted as needed into the middle of the input (but never
2476: within a string or character constant). Such a line means that the
2477: following line originated in file @var{filename} at line @var{linenum}.
2478:
1.1.1.4 root 2479: After the file name comes zero or more flags, which are @samp{1},
1.1.1.8 ! root 2480: @samp{2}, @samp{3}, or @samp{4}. If there are multiple flags, spaces separate
1.1.1.4 root 2481: them. Here is what the flags mean:
2482:
2483: @table @samp
2484: @item 1
2485: This indicates the start of a new file.
2486: @item 2
2487: This indicates returning to a file (after having included another file).
2488: @item 3
2489: This indicates that the following text comes from a system header file,
2490: so certain warnings should be suppressed.
1.1.1.8 ! root 2491: @item 4
! 2492: This indicates that the following text should be treated as C.
! 2493: @c maybe cross reference NO_IMPLICIT_EXTERN_C
1.1.1.4 root 2494: @end table
1.1 root 2495:
2496: @node Invocation, Concept Index, Output, Top
2497: @section Invoking the C Preprocessor
1.1.1.7 root 2498: @cindex invocation of the preprocessor
1.1 root 2499:
2500: Most often when you use the C preprocessor you will not have to invoke it
2501: explicitly: the C compiler will do so automatically. However, the
1.1.1.7 root 2502: preprocessor is sometimes useful on its own.
1.1 root 2503:
2504: The C preprocessor expects two file names as arguments, @var{infile} and
2505: @var{outfile}. The preprocessor reads @var{infile} together with any other
2506: files it specifies with @samp{#include}. All the output generated by the
2507: combined input files is written in @var{outfile}.
2508:
2509: Either @var{infile} or @var{outfile} may be @samp{-}, which as @var{infile}
2510: means to read from standard input and as @var{outfile} means to write to
2511: standard output. Also, if @var{outfile} or both file names are omitted,
2512: the standard output and standard input are used for the omitted file names.
2513:
2514: @cindex options
2515: Here is a table of command options accepted by the C preprocessor.
2516: These options can also be given when compiling a C program; they are
2517: passed along automatically to the preprocessor when it is invoked by the
2518: compiler.
2519:
2520: @table @samp
2521: @item -P
2522: @findex -P
2523: Inhibit generation of @samp{#}-lines with line-number information in
2524: the output from the preprocessor (@pxref{Output}). This might be
2525: useful when running the preprocessor on something that is not C code
2526: and will be sent to a program which might be confused by the
2527: @samp{#}-lines.
2528:
2529: @item -C
2530: @findex -C
2531: Do not discard comments: pass them through to the output file.
2532: Comments appearing in arguments of a macro call will be copied to the
2533: output before the expansion of the macro call.
2534:
1.1.1.4 root 2535: @item -traditional
2536: @findex -traditional
2537: Try to imitate the behavior of old-fashioned C, as opposed to ANSI C.
2538:
2539: @itemize @bullet
2540: @item
2541: Traditional macro expansion pays no attention to singlequote or
2542: doublequote characters; macro argument symbols are replaced by the
2543: argument values even when they appear within apparent string or
2544: character constants.
2545:
2546: @item
1.1.1.5 root 2547: Traditionally, it is permissible for a macro expansion to end in the
1.1.1.4 root 2548: middle of a string or character constant. The constant continues into
2549: the text surrounding the macro call.
2550:
2551: @item
2552: However, traditionally the end of the line terminates a string or
2553: character constant, with no error.
2554:
2555: @item
2556: In traditional C, a comment is equivalent to no text at all. (In ANSI
2557: C, a comment counts as whitespace.)
2558:
2559: @item
2560: Traditional C does not have the concept of a ``preprocessing number''.
2561: It considers @samp{1.0e+4} to be three tokens: @samp{1.0e}, @samp{+},
2562: and @samp{4}.
2563:
2564: @item
2565: A macro is not suppressed within its own definition, in traditional C.
2566: Thus, any macro that is used recursively inevitably causes an error.
2567:
2568: @item
2569: The character @samp{#} has no special meaning within a macro definition
2570: in traditional C.
2571:
2572: @item
2573: In traditional C, the text at the end of a macro expansion can run
2574: together with the text after the macro call, to produce a single token.
2575: (This is impossible in ANSI C.)
2576:
2577: @item
2578: Traditionally, @samp{\} inside a macro argument suppresses the syntactic
2579: significance of the following character.
2580: @end itemize
2581:
1.1 root 2582: @item -trigraphs
2583: @findex -trigraphs
2584: Process ANSI standard trigraph sequences. These are three-character
2585: sequences, all starting with @samp{??}, that are defined by ANSI C to
2586: stand for single characters. For example, @samp{??/} stands for
2587: @samp{\}, so @samp{'??/n'} is a character constant for a newline.
2588: Strictly speaking, the GNU C preprocessor does not support all
2589: programs in ANSI Standard C unless @samp{-trigraphs} is used, but if
2590: you ever notice the difference it will be with relief.
2591:
2592: You don't want to know any more about trigraphs.
2593:
2594: @item -pedantic
2595: @findex -pedantic
2596: Issue warnings required by the ANSI C standard in certain cases such
2597: as when text other than a comment follows @samp{#else} or @samp{#endif}.
2598:
2599: @item -pedantic-errors
2600: @findex -pedantic-errors
2601: Like @samp{-pedantic}, except that errors are produced rather than
2602: warnings.
2603:
2604: @item -Wtrigraphs
1.1.1.5 root 2605: @findex -Wtrigraphs
1.1 root 2606: Warn if any trigraphs are encountered (assuming they are enabled).
2607:
2608: @item -Wcomment
2609: @findex -Wcomment
2610: @ignore
2611: @c "Not worth documenting" both singular and plural forms of this
2612: @c option, per RMS. But also unclear which is better; hence may need to
2613: @c switch this at some future date. [email protected], 2jan92.
2614: @itemx -Wcomments
2615: (Both forms have the same effect).
2616: @end ignore
2617: Warn whenever a comment-start sequence @samp{/*} appears in a comment.
2618:
2619: @item -Wall
2620: @findex -Wall
2621: Requests both @samp{-Wtrigraphs} and @samp{-Wcomment} (but not
2622: @samp{-Wtraditional}).
2623:
2624: @item -Wtraditional
2625: @findex -Wtraditional
2626: Warn about certain constructs that behave differently in traditional and
2627: ANSI C.
2628:
2629: @item -I @var{directory}
2630: @findex -I
1.1.1.8 ! root 2631: Add the directory @var{directory} to the head of the list of
1.1 root 2632: directories to be searched for header files (@pxref{Include Syntax}).
2633: This can be used to override a system header file, substituting your
2634: own version, since these directories are searched before the system
2635: header file directories. If you use more than one @samp{-I} option,
2636: the directories are scanned in left-to-right order; the standard
2637: system directories come after.
2638:
2639: @item -I-
2640: Any directories specified with @samp{-I} options before the @samp{-I-}
2641: option are searched only for the case of @samp{#include "@var{file}"};
2642: they are not searched for @samp{#include <@var{file}>}.
2643:
2644: If additional directories are specified with @samp{-I} options after
2645: the @samp{-I-}, these directories are searched for all @samp{#include}
1.1.1.8 ! root 2646: directives.
1.1 root 2647:
2648: In addition, the @samp{-I-} option inhibits the use of the current
2649: directory as the first search directory for @samp{#include "@var{file}"}.
2650: Therefore, the current directory is searched only if it is requested
2651: explicitly with @samp{-I.}. Specifying both @samp{-I-} and @samp{-I.}
2652: allows you to control precisely which directories are searched before
2653: the current one and which are searched after.
2654:
2655: @item -nostdinc
1.1.1.5 root 2656: @findex -nostdinc
1.1 root 2657: Do not search the standard system directories for header files.
2658: Only the directories you have specified with @samp{-I} options
2659: (and the current directory, if appropriate) are searched.
2660:
1.1.1.3 root 2661: @item -nostdinc++
1.1.1.5 root 2662: @findex -nostdinc++
1.1.1.3 root 2663: Do not search for header files in the C++-specific standard directories,
2664: but do still search the other standard directories.
1.1.1.5 root 2665: (This option is used when building libg++.)
1.1.1.3 root 2666:
1.1 root 2667: @item -D @var{name}
2668: @findex -D
2669: Predefine @var{name} as a macro, with definition @samp{1}.
2670:
2671: @item -D @var{name}=@var{definition}
2672: Predefine @var{name} as a macro, with definition @var{definition}.
2673: There are no restrictions on the contents of @var{definition}, but if
2674: you are invoking the preprocessor from a shell or shell-like program you
2675: may need to use the shell's quoting syntax to protect characters such as
2676: spaces that have a meaning in the shell syntax. If you use more than
2677: one @samp{-D} for the same @var{name}, the rightmost definition takes
2678: effect.
2679:
2680: @item -U @var{name}
2681: @findex -U
2682: Do not predefine @var{name}. If both @samp{-U} and @samp{-D} are
2683: specified for one name, the @samp{-U} beats the @samp{-D} and the name
2684: is not predefined.
2685:
1.1.1.5 root 2686: @item -undef
2687: @findex -undef
2688: Do not predefine any nonstandard macros.
2689:
1.1.1.4 root 2690: @item -A @var{predicate}(@var{answer})
2691: @findex -A
2692: Make an assertion with the predicate @var{predicate} and answer
2693: @var{answer}. @xref{Assertions}.
2694:
2695: @noindent
2696: You can use @samp{-A-} to disable all predefined assertions; it also
2697: undefines all predefined macros that identify the type of target system.
1.1 root 2698:
2699: @item -dM
2700: @findex -dM
2701: Instead of outputting the result of preprocessing, output a list of
1.1.1.8 ! root 2702: @samp{#define} directives for all the macros defined during the
1.1 root 2703: execution of the preprocessor, including predefined macros. This gives
2704: you a way of finding out what is predefined in your version of the
2705: preprocessor; assuming you have no file @samp{foo.h}, the command
2706:
2707: @example
2708: touch foo.h; cpp -dM foo.h
2709: @end example
2710:
2711: @noindent
2712: will show the values of any predefined macros.
2713:
2714: @item -dD
2715: @findex -dD
2716: Like @samp{-dM} except in two respects: it does @emph{not} include the
2717: predefined macros, and it outputs @emph{both} the @samp{#define}
1.1.1.8 ! root 2718: directives and the result of preprocessing. Both kinds of output go to
1.1 root 2719: the standard output file.
2720:
1.1.1.7 root 2721: @item -M [-MG]
1.1 root 2722: @findex -M
2723: Instead of outputting the result of preprocessing, output a rule
2724: suitable for @code{make} describing the dependencies of the main
2725: source file. The preprocessor outputs one @code{make} rule containing
2726: the object file name for that source file, a colon, and the names of
2727: all the included files. If there are many included files then the
2728: rule is split into several lines using @samp{\}-newline.
2729:
1.1.1.7 root 2730: @samp{-MG} says to treat missing header files as generated files and assume
2731: they live in the same directory as the source file. It must be specified
2732: in addition to @samp{-M}.
2733:
1.1 root 2734: This feature is used in automatic updating of makefiles.
2735:
1.1.1.7 root 2736: @item -MM [-MG]
1.1 root 2737: @findex -MM
2738: Like @samp{-M} but mention only the files included with @samp{#include
2739: "@var{file}"}. System header files included with @samp{#include
2740: <@var{file}>} are omitted.
2741:
1.1.1.7 root 2742: @item -MD @var{file}
1.1 root 2743: @findex -MD
1.1.1.7 root 2744: Like @samp{-M} but the dependency information is written to @var{file}.
2745: This is in addition to compiling the file as specified---@samp{-MD} does
2746: not inhibit ordinary compilation the way @samp{-M} does.
2747:
2748: When invoking gcc, do not specify the @var{file} argument.
2749: Gcc will create file names made by replacing ".c" with ".d" at
2750: the end of the input file names.
1.1 root 2751:
1.1.1.7 root 2752: In Mach, you can use the utility @code{md} to merge multiple dependency
2753: files into a single dependency file suitable for using with the @samp{make}
1.1 root 2754: command.
2755:
1.1.1.7 root 2756: @item -MMD @var{file}
1.1 root 2757: @findex -MMD
2758: Like @samp{-MD} except mention only user header files, not system
2759: header files.
2760:
2761: @item -H
2762: @findex -H
2763: Print the name of each header file used, in addition to other normal
2764: activities.
2765:
2766: @item -imacros @var{file}
2767: @findex -imacros
2768: Process @var{file} as input, discarding the resulting output, before
2769: processing the regular input file. Because the output generated from
2770: @var{file} is discarded, the only effect of @samp{-imacros @var{file}}
2771: is to make the macros defined in @var{file} available for use in the
2772: main input.
2773:
2774: @item -include @var{file}
2775: @findex -include
2776: Process @var{file} as input, and include all the resulting output,
2777: before processing the regular input file.
2778:
1.1.1.5 root 2779: @item -idirafter @var{dir}
2780: @findex -idirafter
2781: @cindex second include path
2782: Add the directory @var{dir} to the second include path. The directories
2783: on the second include path are searched when a header file is not found
2784: in any of the directories in the main include path (the one that
2785: @samp{-I} adds to).
2786:
2787: @item -iprefix @var{prefix}
2788: @findex -iprefix
2789: Specify @var{prefix} as the prefix for subsequent @samp{-iwithprefix}
2790: options.
2791:
2792: @item -iwithprefix @var{dir}
2793: @findex -iwithprefix
2794: Add a directory to the second include path. The directory's name is
2795: made by concatenating @var{prefix} and @var{dir}, where @var{prefix}
2796: was specified previously with @samp{-iprefix}.
2797:
1.1.1.7 root 2798: @item -isystem @var{dir}
2799: @findex -isystem
2800: Add a directory to the beginning of the second include path, marking it
2801: as a system directory, so that it gets the same special treatment as
2802: is applied to the standard system directories.
2803:
1.1 root 2804: @item -lang-c
1.1.1.8 ! root 2805: @itemx -lang-c89
1.1 root 2806: @itemx -lang-c++
2807: @itemx -lang-objc
2808: @itemx -lang-objc++
1.1.1.5 root 2809: @findex -lang-c
1.1.1.8 ! root 2810: @findex -lang-c89
1.1.1.5 root 2811: @findex -lang-c++
2812: @findex -lang-objc
2813: @findex -lang-objc++
1.1.1.8 ! root 2814: Specify the source language. @samp{-lang-c} is the default; it
! 2815: allows recognition of C++ comments (comments that begin with
! 2816: @samp{//} and end at end of line), since this is
! 2817: a common feature and it will most likely be in the next C standard.
! 2818: @samp{-lang-c89} disables recognition of C++ comments. @samp{-lang-c++}
! 2819: handles C++ comment syntax and includes extra default include
! 2820: directories for C++. @samp{-lang-objc} enables the Objective C
! 2821: @samp{#import} directive. @samp{-lang-objc++} enables both C++ and Objective C
! 2822: extensions.
1.1 root 2823:
2824: These options are generated by the compiler driver @code{gcc}, but not
1.1.1.8 ! root 2825: passed from the @samp{gcc} command line unless you use the driver's
! 2826: @samp{-Wp} option.
1.1 root 2827:
2828: @item -lint
2829: Look for commands to the program checker @code{lint} embedded in
2830: comments, and emit them preceded by @samp{#pragma lint}. For example,
2831: the comment @samp{/* NOTREACHED */} becomes @samp{#pragma lint
2832: NOTREACHED}.
2833:
2834: This option is available only when you call @code{cpp} directly;
2835: @code{gcc} will not pass it from its command line.
2836:
2837: @item -$
1.1.1.5 root 2838: @findex -$
1.1 root 2839: Forbid the use of @samp{$} in identifiers. This is required for ANSI
2840: conformance. @code{gcc} automatically supplies this option to the
2841: preprocessor if you specify @samp{-ansi}, but @code{gcc} doesn't
2842: recognize the @samp{-$} option itself---to use it without the other
2843: effects of @samp{-ansi}, you must call the preprocessor directly.
2844:
2845: @end table
2846:
2847: @node Concept Index, Index, Invocation, Top
2848: @unnumbered Concept Index
2849: @printindex cp
2850:
2851: @node Index,, Concept Index, Top
1.1.1.8 ! root 2852: @unnumbered Index of Directives, Macros and Options
1.1 root 2853: @printindex fn
2854:
2855: @contents
2856: @bye
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.