|
|
1.1 root 1: Info file cpp.info, produced by Makeinfo, -*- Text -*- from input file
2: cpp.texi.
3:
4: This file documents the GNU C Preprocessor.
5:
6: Copyright (C) 1987, 1989, 1991 Free Software Foundation, Inc.
7:
8: Permission is granted to make and distribute verbatim copies of
9: this manual provided the copyright notice and this permission notice
10: are preserved on all copies.
11:
12: Permission is granted to copy and distribute modified versions of
13: this manual under the conditions for verbatim copying, provided also
14: that the entire resulting derived work is distributed under the terms
15: of a permission notice identical to this one.
16:
17: Permission is granted to copy and distribute translations of this
18: manual into another language, under the above conditions for modified
19: versions.
20:
21:
22: File: cpp.info, Node: Top, Next: Global Actions, Up: (DIR)
23:
24: The C Preprocessor
25: ******************
26:
27: The C preprocessor is a "macro processor" that is used
28: automatically by the C compiler to transform your program before
29: actual compilation. It is called a macro processor because it allows
30: you to define "macros", which are brief abbreviations for longer
31: constructs.
32:
33: The C preprocessor provides four separate facilities that you can
34: use as you see fit:
35:
36: * Inclusion of header files. These are files of declarations that
37: can be substituted into your program.
38:
39: * Macro expansion. You can define "macros", which are abbreviations
40: for arbitrary fragments of C code, and then the C preprocessor
41: will replace the macros with their definitions throughout the
42: program.
43:
44: * Conditional compilation. Using special preprocessor commands, you
45: can include or exclude parts of the program according to various
46: conditions.
47:
48: * Line control. If you use a program to combine or rearrange
49: source files into an intermediate file which is then compiled,
50: you can use line control to inform the compiler of where each
51: source line originally came from.
52:
53: C preprocessors vary in some details. This manual discusses the
54: GNU C preprocessor, the C Compatible Compiler Preprocessor. The GNU C
55: preprocessor provides a superset of the features of ANSI Standard C.
56:
57: ANSI Standard C requires the rejection of many harmless constructs
58: commonly used by today's C programs. Such incompatibility would be
59: inconvenient for users, so the GNU C preprocessor is configured to
60: accept these constructs by default. Strictly speaking, to get ANSI
61: Standard C, you must use the options `-trigraphs', `-undef' and
62: `-pedantic', but in practice the consequences of having strict ANSI
63: Standard C make it undesirable to do this. *Note Invocation::.
64:
65: * Menu:
66:
67: * Global Actions:: Actions made uniformly on all input files.
68: * Commands:: General syntax of preprocessor commands.
69: * Header Files:: How and why to use header files.
70: * Macros:: How and why to use macros.
71: * Conditionals:: How and why to use conditionals.
72: * Combining Sources:: Use of line control when you combine source files.
73: * Other Commands:: Miscellaneous preprocessor commands.
74: * Output:: Format of output from the C preprocessor.
75: * Invocation:: How to invoke the preprocessor; command options.
76: * Concept Index:: Index of concepts and terms.
77: * Index:: Index of commands, predefined macros and options.
78:
79:
80: File: cpp.info, Node: Global Actions, Next: Commands, Prev: Top, Up: Top
81:
82: Transformations Made Globally
83: =============================
84:
85: Most C preprocessor features are inactive unless you give specific
86: commands to request their use. (Preprocessor commands are lines
87: starting with `#'; *note Commands::.). But there are three
88: transformations that the preprocessor always makes on all the input it
89: receives, even in the absence of commands.
90:
91: * All C comments are replaced with single spaces.
92:
93: * Backslash-Newline sequences are deleted, no matter where. This
94: feature allows you to break long lines for cosmetic purposes
95: without changing their meaning.
96:
97: * Predefined macro names are replaced with their expansions (*note
98: Predefined::.).
99:
100: The first two transformations are done *before* nearly all other
101: parsing and before preprocessor commands are recognized. Thus, for
102: example, you can split a line cosmetically with Backslash-Newline
103: anywhere (except when trigraphs are in use; see below).
104:
105: /*
106: */ # /*
107: */ defi\
108: ne FO\
109: O 10\
110: 20
111:
112: is equivalent into `#define FOO 1020'. You can split even an escape
113: sequence with Backslash-Newline. For example, you can split
114: `"foo\bar"' between the `\' and the `b' to get
115:
116: "foo\\
117: bar"
118:
119: This behavior is unclean: in all other contexts, a Backslash can be
120: inserted in a string constant as an ordinary character by writing a
121: double Backslash, and this creates an exception. But the ANSI C
122: standard requires it. (Strict ANSI C does not allow Newlines in
123: string constants, so they do not consider this a problem.)
124:
125: But there are a few exceptions to all three transformations.
126:
127: * C comments and predefined macro names are not recognized inside a
128: `#include' command in which the file name is delimited with `<'
129: and `>'.
130:
131: * C comments and predefined macro names are never recognized within
132: a character or string constant. (Strictly speaking, this is the
133: rule, not an exception, but it is worth noting here anyway.)
134:
135: * Backslash-Newline may not safely be used within an ANSI
136: "trigraph". Trigraphs are converted before Backslash-Newline is
137: deleted. If you write what looks like a trigraph with a
138: Backslash-Newline inside, the Backslash-Newline is deleted as
139: usual, but it is then too late to recognize the trigraph.
140:
141: This exception is relevant only if you use the `-trigraphs'
142: option to enable trigraph processing. *Note Invocation::.
143:
144:
145: File: cpp.info, Node: Commands, Next: Header Files, Prev: Global Actions, Up: Top
146:
147: Preprocessor Commands
148: =====================
149:
150: Most preprocessor features are active only if you use preprocessor
151: commands to request their use.
152:
153: Preprocessor commands are lines in your program that start with `#'.
154: The `#' is followed by an identifier that is the "command name". For
155: example, `#define' is the command that defines a macro. Whitespace is
156: also allowed before and after the `#'.
157:
158: The set of valid command names is fixed. Programs cannot define new
159: preprocessor commands.
160:
161: Some command names require arguments; these make up the rest of the
162: command line and must be separated from the command name by
163: whitespace. For example, `#define' must be followed by a macro name
164: and the intended expansion of the macro.
165:
166: A preprocessor command cannot be more than one line in normal
167: circumstances. It may be split cosmetically with Backslash-Newline,
168: but that has no effect on its meaning. Comments containing Newlines
169: can also divide the command into multiple lines, but the comments are
170: changed to Spaces before the command is interpreted. The only way a
171: significant Newline can occur in a preprocessor command is within a
172: string constant or character constant. Note that most C compilers
173: that might be applied to the output from the preprocessor do not
174: accept string or character constants containing Newlines.
175:
176: The `#' and the command name cannot come from a macro expansion.
177: For example, if `foo' is defined as a macro expanding to `define',
178: that does not make `#foo' a valid preprocessor command.
179:
180:
181: File: cpp.info, Node: Header Files, Next: Macros, Prev: Commands, Up: Top
182:
183: Header Files
184: ============
185:
186: A header file is a file containing C declarations and macro
187: definitions (*note Macros::.) to be shared between several source
188: files. You request the use of a header file in your program with the
189: C preprocessor command `#include'.
190:
191: * Menu:
192:
193: * Header Uses:: What header files are used for.
194: * Include Syntax:: How to write `#include' commands.
195: * Include Operation:: What `#include' does.
196: * Once-Only:: Preventing multiple inclusion of one header file.
197: * Inheritance:: Including one header file in another header file.
198:
199:
200: File: cpp.info, Node: Header Uses, Next: Include Syntax, Prev: Header Files, Up: Header Files
201:
202: Uses of Header Files
203: --------------------
204:
205: Header files serve two kinds of purposes.
206:
207: * System header files declare the interfaces to parts of the
208: operating system. You include them in your program to supply the
209: definitions and declarations you need to invoke system calls and
210: libraries.
211:
212: * Your own header files contain declarations for interfaces between
213: the source files of your program. Each time you have a group of
214: related declarations and macro definitions all or most of which
215: are needed in several different source files, it is a good idea
216: to create a header file for them.
217:
218: Including a header file produces the same results in C compilation
219: as copying the header file into each source file that needs it. But
220: such copying would be time-consuming and error-prone. With a header
221: file, the related declarations appear in only one place. If they need
222: to be changed, they can be changed in one place, and programs that
223: include the header file will automatically use the new version when
224: next recompiled. The header file eliminates the labor of finding and
225: changing all the copies as well as the risk that a failure to find one
226: copy will result in inconsistencies within a program.
227:
228: The usual convention is to give header files names that end with
229: `.h'.
230:
231:
232: File: cpp.info, Node: Include Syntax, Next: Include Operation, Prev: Header Uses, Up: Header Files
233:
234: The `#include' Command
235: ----------------------
236:
237: Both user and system header files are included using the
238: preprocessor command `#include'. It has three variants:
239:
240: `#include <FILE>'
241: This variant is used for system header files. It searches for a
242: file named FILE in a list of directories specified by you, then
243: in a standard list of system directories. You specify
244: directories to search for header files with the command option
245: `-I' (*note Invocation::.). The option `-nostdinc' inhibits
246: searching the standard system directories; in this case only the
247: directories you specify are searched.
248:
249: The parsing of this form of `#include' is slightly special
250: because comments are not recognized within the `<...>'. Thus, in
251: `#include <x/*y>' the `/*' does not start a comment and the
252: command specifies inclusion of a system header file named `x/*y'.
253: Of course, a header file with such a name is unlikely to exist
254: on Unix, where shell wildcard features would make it hard to
255: manipulate.
256:
257: The argument FILE may not contain a `>' character. It may,
258: however, contain a `<' character.
259:
260: `#include "FILE"'
261: This variant is used for header files of your own program. It
262: searches for a file named FILE first in the current directory,
263: then in the same directories used for system header files. The
264: current directory is the directory of the current input file. It
265: is tried first because it is presumed to be the location of the
266: files that the current input file refers to. (If the `-I-'
267: option is used, the special treatment of the current directory is
268: inhibited.)
269:
270: The argument FILE may not contain `"' characters. If backslashes
271: occur within FILE, they are considered ordinary text characters,
272: not escape characters. None of the character escape sequences
273: appropriate to string constants in C are processed. Thus,
274: `#include "x\n\\y"' specifies a filename containing three
275: backslashes. It is not clear why this behavior is ever useful,
276: but the ANSI standard specifies it.
277:
278: `#include ANYTHING ELSE'
279: This variant is called a "computed #include". Any `#include'
280: command whose argument does not fit the above two forms is a
281: computed include. The text ANYTHING ELSE is checked for macro
282: calls, which are expanded (*note Macros::.). When this is done,
283: the result must fit one of the above two variants--in particular,
284: the expanded text must in the end be surrounded by either quotes
285: or angle braces.
286:
287: This feature allows you to define a macro which controls the file
288: name to be used at a later point in the program. One application
289: of this is to allow a site-configuration file for your program to
290: specify the names of the system include files to be used. This
291: can help in porting the program to various operating systems in
292: which the necessary system header files are found in different
293: places.
294:
295:
296: File: cpp.info, Node: Include Operation, Next: Once-Only, Prev: Include Syntax, Up: Header Files
297:
298: How `#include' Works
299: --------------------
300:
301: The `#include' command works by directing the C preprocessor to scan
302: the specified file as input before continuing with the rest of the
303: current file. The output from the preprocessor contains the output
304: already generated, followed by the output resulting from the included
305: file, followed by the output that comes from the text after the
306: `#include' command. For example, given two files as follows:
307:
308: /* File program.c */
309: int x;
310: #include "header.h"
311:
312: main ()
313: {
314: printf (test ());
315: }
316:
317:
318: /* File header.h */
319: char *test ();
320:
321: the output generated by the C preprocessor for `program.c' as input
322: would be
323:
324: int x;
325: char *test ();
326:
327: main ()
328: {
329: printf (test ());
330: }
331:
332: Included files are not limited to declarations and macro
333: definitions; those are merely the typical uses. Any fragment of a C
334: program can be included from another file. The include file could
335: even contain the beginning of a statement that is concluded in the
336: containing file, or the end of a statement that was started in the
337: including file. However, a comment or a string or character constant
338: may not start in the included file and finish in the including file.
339: An unterminated comment, string constant or character constant in an
340: included file is considered to end (with an error message) at the end
341: of the file.
342:
343: The line following the `#include' command is always treated as a
344: separate line by the C preprocessor even if the included file lacks a
345: final newline.
346:
347:
348: File: cpp.info, Node: Once-Only, Next: Inheritance, Prev: Include Operation, Up: Header Files
349:
350: Once-Only Include Files
351: -----------------------
352:
353: Very often, one header file includes another. It can easily result
354: that a certain header file is included more than once. This may lead
355: to errors, if the header file defines structure types or typedefs, and
356: is certainly wasteful. Therefore, we often wish to prevent multiple
357: inclusion of a header file.
358:
359: The standard way to do this is to enclose the entire real contents
360: of the file in a conditional, like this:
361:
362: #ifndef __FILE_FOO_SEEN__
363: #define __FILE_FOO_SEEN__
364:
365: THE ENTIRE FILE
366:
367: #endif /* __FILE_FOO_SEEN__ */
368:
369: The macro `__FILE_FOO_SEEN__' indicates that the file has been
370: included once already; its name should begin with `__' to avoid
371: conflicts with user programs, and it should contain the name of the
372: file and some additional text, to avoid conflicts with other header
373: files.
374:
375: The GNU C preprocessor is programmed to notice when a header file
376: uses this particular construct and handle it efficiently. If a header
377: file is contained entirely in a `#ifndef' conditional, then it records
378: that fact. If a subsequent `#include' specifies the same file, and
379: the macro in the `#ifndef' is already defined, then the file is
380: entirely skipped, without even reading it.
381:
382: There is also an explicit command to tell the preprocessor that it
383: need not include a file more than once. This is called `#pragma once',
384: and was used *in addition to* the `#ifndef' conditional around the
385: contents of the header file. `#pragma once' is now obsolete and
386: should not be used at all.
387:
388: In the Objective C language, there is a variant of `#include'
389: called `#import' which includes a file, but does so at most once. If
390: you use `#import' *instead of* `#include', then you don't need the
391: conditionals inside the header file to prevent multiple execution of
392: the contents.
393:
394: `#import' is obsolete because it is not a well-designed feature.
395: It requires the users of a header file--the applications
396: programmers--to know that a certain header file should only be included
397: once. It is much better for the header file's implementor to write the
398: file so that users don't need to know this. Using `#ifndef'
399: accomplishes this goal.
400:
401:
402: File: cpp.info, Node: Inheritance, Prev: Once-Only, Up: Header Files
403:
404: Inheritance and Header Files
405: ============================
406:
407: "Inheritance" is what happens when one object or file derives some
408: of its contents by virtual copying from another object or file. In
409: the case of C header files, inheritance means that one header file
410: includes another header file and then replaces or adds something.
411:
412: If the inheriting header file and the base header file have
413: different names, then inheritance is straightforward: simply write
414: `#include "BASE"' in the inheriting file.
415:
416: Sometimes it is necessary to give the inheriting file the same name
417: as the base file. This is less straightforward.
418:
419: For example, suppose an application program uses the system header
420: file `sys/signal.h', but the version of `/usr/include/sys/signal.h' on
421: a particular system doesn't do what the application program expects.
422: It might be convenient to define a "local" version, perhaps under the
423: name `/usr/local/include/sys/signal.h', to override or add to the one
424: supplied by the system.
425:
426: You can do this by using the option `-I.' for compilation, and
427: writing a file `sys/signal.h' that does what the application program
428: expects. But making this file include the standard `sys/signal.h' is
429: not so easy--writing `#include <sys/signal.h>' in that file doesn't
430: work, because it includes your own version of the file, not the
431: standard system version. Used in that file itself, this leads to an
432: infinite recursion and a fatal error in compilation.
433:
434: `#include </usr/include/sys/signal.h>' would find the proper file,
435: but that is not clean, since it makes an assumption about where the
436: system header file is found. This is bad for maintenance, since it
437: means that any change in where the system's header files are kept
438: requires a change somewhere else.
439:
440: The clean way to solve this problem is to use `#include_next',
441: which means, "Include the *next* file with this name." This command
442: works like `#include' except in searching for the specified file: it
443: starts searching the list of header file directories *after* the
444: directory in which the current file was found.
445:
446: Suppose you specify `-I /usr/local/include', and the list of
447: directories to search also includes `/usr/include'; and suppose that
448: both directories contain a file named `sys/signal.h'. Ordinary
449: `#include <sys/signal.h>' finds the file under `/usr/local/include'.
450: If that file contains `#include_next <sys/signal.h>', it starts
451: searching after that directory, and finds the file in `/usr/include'.
452:
453:
454: File: cpp.info, Node: Macros, Next: Conditionals, Prev: Header Files, Up: Top
455:
456: Macros
457: ======
458:
459: A macro is a sort of abbreviation which you can define once and then
460: use later. There are many complicated features associated with macros
461: in the C preprocessor.
462:
463: * Menu:
464:
465: * Simple Macros:: Macros that always expand the same way.
466: * Argument Macros:: Macros that accept arguments that are substituted
467: into the macro expansion.
468: * Predefined:: Predefined macros that are always available.
469: * Stringification:: Macro arguments converted into string constants.
470: * Concatenation:: Building tokens from parts taken from macro arguments.
471: * Undefining:: Cancelling a macro's definition.
472: * Redefining:: Changing a macro's definition.
473: * Macro Pitfalls:: Macros can confuse the unwary. Here we explain
474: several common problems and strange features.
475:
476:
477: File: cpp.info, Node: Simple Macros, Next: Argument Macros, Prev: Macros, Up: Macros
478:
479: Simple Macros
480: -------------
481:
482: A "simple macro" is a kind of abbreviation. It is a name which
483: stands for a fragment of code. Some people refer to these as
484: "manifest constants".
485:
486: Before you can use a macro, you must "define" it explicitly with the
487: `#define' command. `#define' is followed by the name of the macro and
488: then the code it should be an abbreviation for. For example,
489:
490: #define BUFFER_SIZE 1020
491:
492: defines a macro named `BUFFER_SIZE' as an abbreviation for the text
493: `1020'. Therefore, if somewhere after this `#define' command there
494: comes a C statement of the form
495:
496: foo = (char *) xmalloc (BUFFER_SIZE);
497:
498: then the C preprocessor will recognize and "expand" the macro
499: `BUFFER_SIZE', resulting in
500:
501: foo = (char *) xmalloc (1020);
502:
503: the definition must be a single line; however, it may not end in the
504: middle of a multi-line string constant or character constant.
505:
506: The use of all upper case for macro names is a standard convention.
507: Programs are easier to read when it is possible to tell at a glance
508: which names are macros.
509:
510: Normally, a macro definition must be a single line, like all C
511: preprocessor commands. (You can split a long macro definition
512: cosmetically with Backslash-Newline.) There is one exception:
513: Newlines can be included in the macro definition if within a string or
514: character constant. By the same token, it is not possible for a macro
515: definition to contain an unbalanced quote character; the definition
516: automatically extends to include the matching quote character that
517: ends the string or character constant. Comments within a macro
518: definition may contain Newlines, which make no difference since the
519: comments are entirely replaced with Spaces regardless of their
520: contents.
521:
522: Aside from the above, there is no restriction on what can go in a
523: macro body. Parentheses need not balance. The body need not resemble
524: valid C code. (Of course, you might get error messages from the C
525: compiler when you use the macro.)
526:
527: The C preprocessor scans your program sequentially, so macro
528: definitions take effect at the place you write them. Therefore, the
529: following input to the C preprocessor
530:
531: foo = X;
532: #define X 4
533: bar = X;
534:
535: produces as output
536:
537: foo = X;
538:
539: bar = 4;
540:
541: After the preprocessor expands a macro name, the macro's definition
542: body is appended to the front of the remaining input, and the check
543: for macro calls continues. Therefore, the macro body can contain
544: calls to other macros. For example, after
545:
546: #define BUFSIZE 1020
547: #define TABLESIZE BUFSIZE
548:
549: the name `TABLESIZE' when used in the program would go through two
550: stages of expansion, resulting ultimately in `1020'.
551:
552: This is not at all the same as defining `TABLESIZE' to be `1020'.
553: The `#define' for `TABLESIZE' uses exactly the body you specify--in
554: this case, `BUFSIZE'--and does not check to see whether it too is the
555: name of a macro. It's only when you *use* `TABLESIZE' that the result
556: of its expansion is checked for more macro names. *Note Cascaded
557: Macros::.
558:
559:
560: File: cpp.info, Node: Argument Macros, Next: Predefined, Prev: Simple Macros, Up: Macros
561:
562: Macros with Arguments
563: ---------------------
564:
565: A simple macro always stands for exactly the same text, each time
566: it is used. Macros can be more flexible when they accept "arguments".
567: Arguments are fragments of code that you supply each time the macro is
568: used. These fragments are included in the expansion of the macro
569: according to the directions in the macro definition.
570:
571: To define a macro that uses arguments, you write a `#define' command
572: with a list of "argument names" in parentheses after the name of the
573: macro. The argument names may be any valid C identifiers, separated by
574: commas and optionally whitespace. The open-parenthesis must follow the
575: macro name immediately, with no space in between.
576:
577: For example, here is a macro that computes the minimum of two
578: numeric values, as it is defined in many C programs:
579:
580: #define min(X, Y) ((X) < (Y) ? (X) : (Y))
581:
582: (This is not the best way to define a "minimum" macro in GNU C. *Note
583: Side Effects::, for more information.)
584:
585: To use a macro that expects arguments, you write the name of the
586: macro followed by a list of "actual arguments" in parentheses.
587: separated by commas. The number of actual arguments you give must
588: match the number of arguments the macro expects. Examples of use of
589: the macro `min' include `min (1, 2)' and `min (x + 28, *p)'.
590:
591: The expansion text of the macro depends on the arguments you use.
592: Each of the argument names of the macro is replaced, throughout the
593: macro definition, with the corresponding actual argument. Using the
594: same macro `min' defined above, `min (1, 2)' expands into
595:
596: ((1) < (2) ? (1) : (2))
597:
598: where `1' has been substituted for `X' and `2' for `Y'.
599:
600: Likewise, `min (x + 28, *p)' expands into
601:
602: ((x + 28) < (*p) ? (x + 28) : (*p))
603:
604: Parentheses in the actual arguments must balance; a comma within
605: parentheses does not end an argument. However, there is no requirement
606: for brackets or braces to balance, and they do not prevent a comma from
607: separating arguments. Thus,
608:
609: macro (array[x = y, x + 1])
610:
611: passes two arguments to `macro': `array[x = y' and `x + 1]'. If you
612: want to supply `array[x = y, x + 1]' as an argument, you must write it
613: as `array[(x = y, x + 1)]', which is equivalent C code.
614:
615: After the actual arguments are substituted into the macro body, the
616: entire result is appended to the front of the remaining input, and the
617: check for macro calls continues. Therefore, the actual arguments can
618: contain calls to other macros, either with or without arguments, or
619: even to the same macro. The macro body can also contain calls to
620: other macros. For example, `min (min (a, b), c)' expands into this
621: text:
622:
623: ((((a) < (b) ? (a) : (b))) < (c)
624: ? (((a) < (b) ? (a) : (b)))
625: : (c))
626:
627: (Line breaks shown here for clarity would not actually be generated.)
628:
629: If you use the macro name followed by something other than an
630: open-parenthesis (after ignoring any spaces, tabs and comments that
631: follow), it is not a call to the macro, and the preprocessor does not
632: change what you have written. Therefore, it is possible for the same
633: name to be a variable or function in your program as well as a macro,
634: and you can choose in each instance whether to refer to the macro (if
635: an actual argument list follows) or the variable or function (if an
636: argument list does not follow).
637:
638: Such dual use of one name could be confusing and should be avoided
639: except when the two meanings are effectively synonymous: that is, when
640: the name is both a macro and a function and the two have similar
641: effects. You can think of the name simply as a function; use of the
642: name for purposes other than calling it (such as, to take the address)
643: will refer to the function, while calls will expand the macro and
644: generate better but equivalent code. For example, you can use a
645: function named `min' in the same source file that defines the macro.
646: If you write `&min' with no argument list, you refer to the function.
647: If you write `min (x, bb)', with an argument list, the macro is
648: expanded. If you write `(min) (a, bb)', where the name `min' is not
649: followed by an open-parenthesis, the macro is not expanded, so you
650: wind up with a call to the function `min'.
651:
652: You may not define the same name as both a simple macro and a macro
653: with arguments.
654:
655: In the definition of a macro with arguments, the list of argument
656: names must follow the macro name immediately with no space in between.
657: If there is a space after the macro name, the macro is defined as
658: taking no arguments, and all the rest of the lineis taken to be the
659: expansion. The reason for this is that it is often useful to define a
660: macro that takes no arguments and whose definition begins with an
661: identifier in parentheses. This rule about spaces makes it possible
662: for you to do either this:
663:
664: #define FOO(x) - 1 / (x)
665:
666: (which defines `FOO' to take an argument and expand into minus the
667: reciprocal of that argument) or this:
668:
669: #define BAR (x) - 1 / (x)
670:
671: (which defines `BAR' to take no argument and always expand into `(x) -
672: 1 / (x)').
673:
674: Note that the *uses* of a macro with arguments can have spaces
675: before the left parenthesis; it's the *definition* where it matters
676: whether there is a space.
677:
678:
679: File: cpp.info, Node: Predefined, Next: Stringification, Prev: Argument Macros, Up: Macros
680:
681: Predefined Macros
682: -----------------
683:
684: Several simple macros are predefined. You can use them without
685: giving definitions for them. They fall into two classes: standard
686: macros and system-specific macros.
687:
688: * Menu:
689:
690: * Standard Predefined:: Standard predefined macros.
691: * Nonstandard Predefined:: Nonstandard predefined macros.
692:
693:
694: File: cpp.info, Node: Standard Predefined, Next: Nonstandard Predefined, Prev: Predefined, Up: Predefined
695:
696: Standard Predefined Macros
697: ..........................
698:
699: The standard predefined macros are available with the same meanings
700: regardless of the machine or operating system on which you are using
701: GNU C. Their names all start and end with double underscores. Those
702: preceding `__GNUC__' in this table are standardized by ANSI C; the
703: rest are GNU C extensions.
704:
705: `__FILE__'
706: This macro expands to the name of the current input file, in the
707: form of a C string constant. The precise name returned is the
708: one that was specified in `#include' or as the input file name
709: argument.
710:
711: `__LINE__'
712: This macro expands to the current input line number, in the form
713: of a decimal integer constant. While we call it a predefined
714: macro, it's a pretty strange macro, since its "definition"
715: changes with each new line of source code.
716:
717: This and `__FILE__' are useful in generating an error message to
718: report an inconsistency detected by the program; the message can
719: state the source line at which the inconsistency was detected.
720: For example,
721:
722: fprintf (stderr, "Internal error: "
723: "negative string length "
724: "%d at %s, line %d.",
725: length, __FILE__, __LINE__);
726:
727: A `#include' command changes the expansions of `__FILE__' and
728: `__LINE__' to correspond to the included file. At the end of
729: that file, when processing resumes on the input file that
730: contained the `#include' command, the expansions of `__FILE__' and
731: `__LINE__' revert to the values they had before the `#include'
732: (but `__LINE__' is then incremented by one as processing moves to
733: the line after the `#include').
734:
735: The expansions of both `__FILE__' and `__LINE__' are altered if a
736: `#line' command is used. *Note Combining Sources::.
737:
738: `__INCLUDE_LEVEL__'
739: This macro expands to a decimal integer constant that represents
740: the depth of nesting in include files. The value of this macro is
741: incremented on every `#include' command and decremented at every
742: end of file.
743:
744: `__DATE__'
745: This macro expands to a string constant that describes the date on
746: which the preprocessor is being run. The string constant contains
747: eleven characters and looks like `"Jan 29 1987"' or
748: `"Apr 1 1905"'.
749:
750: `__TIME__'
751: This macro expands to a string constant that describes the time at
752: which the preprocessor is being run. The string constant contains
753: eight characters and looks like `"23:59:01"'.
754:
755: `__STDC__'
756: This macro expands to the constant 1, to signify that this is ANSI
757: Standard C. (Whether that is actually true depends on what C
758: compiler will operate on the output from the preprocessor.)
759:
760: `__GNUC__'
761: This macro is defined if and only if this is GNU C. This macro is
762: defined only when the entire GNU C compiler is in use; if you
763: invoke the preprocessor directly, `__GNUC__' is undefined.
764:
765: `__STRICT_ANSI__'
766: This macro is defined if and only if the `-ansi' switch was
767: specified when GNU C was invoked. Its definition is the null
768: string. This macro exists primarily to direct certain GNU header
769: files not to define certain traditional Unix constructs which are
770: incompatible with ANSI C.
771:
772: `__BASE_FILE__'
773: This macro expands to the name of the main input file, in the form
774: of a C string constant. This is the source file that was
775: specified as an argument when the C compiler was invoked.
776:
777: `__VERSION__'
778: This macro expands to a string which describes the version number
779: of GNU C. The string is normally a sequence of decimal numbers
780: separated by periods, such as `"1.18"'. The only reasonable use
781: of this macro is to incorporate it into a string constant.
782:
783: `__OPTIMIZE__'
784: This macro is defined in optimizing compilations. It causes
785: certain GNU header files to define alternative macro definitions
786: for some system library functions. It is unwise to refer to or
787: test the definition of this macro unless you make very sure that
788: programs will execute with the same effect regardless.
789:
790: `__CHAR_UNSIGNED__'
791: This macro is defined if and only if the data type `char' is
792: unsigned on the target machine. It exists to cause the standard
793: header file `limit.h' to work correctly. It is bad practice to
794: refer to this macro yourself; instead, refer to the standard
795: macros defined in `limit.h'. The preprocessor uses this macro to
796: determine whether or not to sign-extend large character constants
797: written in octal; see *Note The `#if' Command: #if Command.
798:
799:
800: File: cpp.info, Node: Nonstandard Predefined, Prev: Standard Predefined, Up: Predefined
801:
802: Nonstandard Predefined Macros
803: .............................
804:
805: The C preprocessor normally has several predefined macros that vary
806: between machines because their purpose is to indicate what type of
807: system and machine is in use. This manual, being for all systems and
808: machines, cannot tell you exactly what their names are; instead, we
809: offer a list of some typical ones. You can use `cpp -dM' to see the
810: values of predefined macros; *note Invocation::..
811:
812: Some nonstandard predefined macros describe the operating system in
813: use, with more or less specificity. For example,
814:
815: `unix'
816: `unix' is normally predefined on all Unix systems.
817:
818: `BSD'
819: `BSD' is predefined on recent versions of Berkeley Unix (perhaps
820: only in version 4.3).
821:
822: Other nonstandard predefined macros describe the kind of CPU, with
823: more or less specificity. For example,
824:
825: `vax'
826: `vax' is predefined on Vax computers.
827:
828: `mc68000'
829: `mc68000' is predefined on most computers whose CPU is a Motorola
830: 68000, 68010 or 68020.
831:
832: `m68k'
833: `m68k' is also predefined on most computers whose CPU is a 68000,
834: 68010 or 68020; however, some makers use `mc68000' and some use
835: `m68k'. Some predefine both names. What happens in GNU C
836: depends on the system you are using it on.
837:
838: `M68020'
839: `M68020' has been observed to be predefined on some systems that
840: use 68020 CPUs--in addition to `mc68000' and `m68k', which are
841: less specific.
842:
843: `_AM29K'
844: `_AM29000'
845: Both `_AM29K' and `_AM29000' are predefined for the AMD 29000 CPU
846: family.
847:
848: `ns32000'
849: `ns32000' is predefined on computers which use the National
850: Semiconductor 32000 series CPU.
851:
852: Yet other nonstandard predefined macros describe the manufacturer of
853: the system. For example,
854:
855: `sun'
856: `sun' is predefined on all models of Sun computers.
857:
858: `pyr'
859: `pyr' is predefined on all models of Pyramid computers.
860:
861: `sequent'
862: `sequent' is predefined on all models of Sequent computers.
863:
864: These predefined symbols are not only nonstandard, they are
865: contrary to the ANSI standard because their names do not start with
866: underscores. Therefore, the option `-ansi' inhibits the definition of
867: these symbols.
868:
869: This tends to make `-ansi' useless, since many programs depend on
870: the customary nonstandard predefined symbols. Even system header
871: files check them and will generate incorrect declarations if they do
872: not find the names that are expected. You might think that the header
873: files supplied for the Uglix computer would not need to test what
874: machine they are running on, because they can simply assume it is the
875: Uglix; but often they do, and they do so using the customary names.
876: As a result, very few C programs will compile with `-ansi'. We intend
877: to avoid such problems on the GNU system.
878:
879: What, then, should you do in an ANSI C program to test the type of
880: machine it will run on?
881:
882: GNU C offers a parallel series of symbols for this purpose, whose
883: names are made from the customary ones by adding `__' at the beginning
884: and end. Thus, the symbol `__vax__' would be available on a Vax, and
885: so on.
886:
887: The set of nonstandard predefined names in the GNU C preprocessor is
888: controlled (when `cpp' is itself compiled) by the macro
889: `CPP_PREDEFINES', which should be a string containing `-D' options,
890: separated by spaces. For example, on the Sun 3, we use the following
891: definition:
892:
893: #define CPP_PREDEFINES "-Dmc68000 -Dsun -Dunix -Dm68k"
894:
895: This macro is usually specified in `tm.h'.
896:
897:
898: File: cpp.info, Node: Stringification, Next: Concatenation, Prev: Predefined, Up: Macros
899:
900: Stringification
901: ---------------
902:
903: "Stringification" means turning a code fragment into a string
904: constant whose contents are the text for the code fragment. For
905: example, stringifying `foo (z)' results in `"foo (z)"'.
906:
907: In the C preprocessor, stringification is an option available when
908: macro arguments are substituted into the macro definition. In the
909: body of the definition, when an argument name appears, the character
910: `#' before the name specifies stringification of the corresponding
911: actual argument when it is substituted at that point in the
912: definition. The same argument may be substituted in other places in
913: the definition without stringification if the argument name appears in
914: those places with no `#'.
915:
916: Here is an example of a macro definition that uses stringification:
917:
918: #define WARN_IF(EXP) \
919: do { if (EXP) \
920: fprintf (stderr, "Warning: " #EXP "\n"); } \
921: while (0)
922:
923: Here the actual argument for `EXP' is substituted once as given, into
924: the `if' statement, and once as stringified, into the argument to
925: `fprintf'. The `do' and `while (0)' are a kludge to make it possible
926: to write `WARN_IF (ARG);', which the resemblance of `WARN_IF' to a
927: function would make C programmers want to do; *note Swallow
928: Semicolon::.).
929:
930: The stringification feature is limited to transforming one macro
931: argument into one string constant: there is no way to combine the
932: argument with other text and then stringify it all together. But the
933: example above shows how an equivalent result can be obtained in ANSI
934: Standard C using the feature that adjacent string constants are
935: concatenated as one string constant. The preprocessor stringifies
936: `EXP''s actual argument into a separate string constant, resulting in
937: text like
938:
939: do { if (x == 0) \
940: fprintf (stderr, "Warning: " "x == 0" "\n"); } \
941: while (0)
942:
943: but the C compiler then sees three consecutive string constants and
944: concatenates them into one, producing effectively
945:
946: do { if (x == 0) \
947: fprintf (stderr, "Warning: x == 0\n"); } \
948: while (0)
949:
950: Stringification in C involves more than putting doublequote
951: characters around the fragment; it is necessary to put backslashes in
952: front of all doublequote characters, and all backslashes in string and
953: character constants, in order to get a valid C string constant with
954: the proper contents. Thus, stringifying `p = "foo\n";' results in `"p
955: = \"foo\\n\";"'. However, backslashes that are not inside of string or
956: character constants are not duplicated: `\n' by itself stringifies to
957: `"\n"'.
958:
959: Whitespace (including comments) in the text being stringified is
960: handled according to precise rules. All leading and trailing
961: whitespace is ignored. Any sequence of whitespace in the middle of
962: the text is converted to a single space in the stringified result.
963:
964:
965: File: cpp.info, Node: Concatenation, Next: Undefining, Prev: Stringification, Up: Macros
966:
967: Concatenation
968: -------------
969:
970: "Concatenation" means joining two strings into one. In the context
971: of macro expansion, concatenation refers to joining two lexical units
972: into one longer one. Specifically, an actual argument to the macro
973: can be concatenated with another actual argument or with fixed text to
974: produce a longer name. The longer name might be the name of a
975: function, variable or type, or a C keyword; it might even be the name
976: of another macro, in which case it will be expanded.
977:
978: When you define a macro, you request concatenation with the special
979: operator `##' in the macro body. When the macro is called, after
980: actual arguments are substituted, all `##' operators are deleted, and
981: so is any whitespace next to them (including whitespace that was part
982: of an actual argument). The result is to concatenate the syntactic
983: tokens on either side of the `##'.
984:
985: Consider a C program that interprets named commands. There
986: probably needs to be a table of commands, perhaps an array of
987: structures declared as follows:
988:
989: struct command
990: {
991: char *name;
992: void (*function) ();
993: };
994:
995: struct command commands[] =
996: {
997: { "quit", quit_command},
998: { "help", help_command},
999: ...
1000: };
1001:
1002: It would be cleaner not to have to give each command name twice,
1003: once in the string constant and once in the function name. A macro
1004: which takes the name of a command as an argument can make this
1005: unnecessary. The string constant can be created with stringification,
1006: and the function name by concatenating the argument with `_command'.
1007: Here is how it is done:
1008:
1009: #define COMMAND(NAME) { #NAME, NAME ## _command }
1010:
1011: struct command commands[] =
1012: {
1013: COMMAND (quit),
1014: COMMAND (help),
1015: ...
1016: };
1017:
1018: The usual case of concatenation is concatenating two names (or a
1019: name and a number) into a longer name. But this isn't the only valid
1020: case. It is also possible to concatenate two numbers (or a number and
1021: a name, such as `1.5' and `e3') into a number. Also, multi-character
1022: operators such as `+=' can be formed by concatenation. In some cases
1023: it is even possible to piece together a string constant. However, two
1024: pieces of text that don't together form a valid lexical unit cannot be
1025: concatenated. For example, concatenation with `x' on one side and `+'
1026: on the other is not meaningful because those two characters can't fit
1027: together in any lexical unit of C. The ANSI standard says that such
1028: attempts at concatenation are undefined, but in the GNU C preprocessor
1029: it is well defined: it puts the `x' and `+' side by side with no
1030: particular special results.
1031:
1032: Keep in mind that the C preprocessor converts comments to
1033: whitespace before macros are even considered. Therefore, you cannot
1034: create a comment by concatenating `/' and `*': the `/*' sequence that
1035: starts a comment is not a lexical unit, but rather the beginning of a
1036: "long" space character. Also, you can freely use comments next to a
1037: `##' in a macro definition, or in actual arguments that will be
1038: concatenated, because the comments will be converted to spaces at
1039: first sight, and concatenation will later discard the spaces.
1040:
1041:
1042: File: cpp.info, Node: Undefining, Next: Redefining, Prev: Concatenation, Up: Macros
1043:
1044: Undefining Macros
1045: -----------------
1046:
1047: To "undefine" a macro means to cancel its definition. This is done
1048: with the `#undef' command. `#undef' is followed by the macro name to
1049: be undefined.
1050:
1051: Like definition, undefinition occurs at a specific point in the
1052: source file, and it applies starting from that point. The name ceases
1053: to be a macro name, and from that point on it is treated by the
1054: preprocessor as if it had never been a macro name.
1055:
1056: For example,
1057:
1058: #define FOO 4
1059: x = FOO;
1060: #undef FOO
1061: x = FOO;
1062:
1063: expands into
1064:
1065: x = 4;
1066:
1067: x = FOO;
1068:
1069: In this example, `FOO' had better be a variable or function as well as
1070: (temporarily) a macro, in order for the result of the expansion to be
1071: valid C code.
1072:
1073: The same form of `#undef' command will cancel definitions with
1074: arguments or definitions that don't expect arguments. The `#undef'
1075: command has no effect when used on a name not currently defined as a
1076: macro.
1077:
1078:
1079: File: cpp.info, Node: Redefining, Next: Macro Pitfalls, Prev: Undefining, Up: Macros
1080:
1081: Redefining Macros
1082: -----------------
1083:
1084: "Redefining" a macro means defining (with `#define') a name that is
1085: already defined as a macro.
1086:
1087: A redefinition is trivial if the new definition is transparently
1088: identical to the old one. You probably wouldn't deliberately write a
1089: trivial redefinition, but they can happen automatically when a header
1090: file is included more than once (*note Header Files::.), so they are
1091: accepted silently and without effect.
1092:
1093: Nontrivial redefinition is considered likely to be an error, so it
1094: provokes a warning message from the preprocessor. However, sometimes
1095: it is useful to change the definition of a macro in mid-compilation.
1096: You can inhibit the warning by undefining the macro with `#undef'
1097: before the second definition.
1098:
1099: In order for a redefinition to be trivial, the new definition must
1100: exactly match the one already in effect, with two possible exceptions:
1101:
1102: * Whitespace may be added or deleted at the beginning or the end.
1103:
1104: * Whitespace may be changed in the middle (but not inside strings).
1105: However, it may not be eliminated entirely, and it may not be
1106: added where there was no whitespace at all.
1107:
1108: Recall that a comment counts as whitespace.
1109:
1110:
1111: File: cpp.info, Node: Macro Pitfalls, Prev: Redefining, Up: Macros
1112:
1113: Pitfalls and Subtleties of Macros
1114: ---------------------------------
1115:
1116: In this section we describe some special rules that apply to macros
1117: and macro expansion, and point out certain cases in which the rules
1118: have counterintuitive consequences that you must watch out for.
1119:
1120: * Menu:
1121:
1122: * Misnesting:: Macros can contain unmatched parentheses.
1123: * Macro Parentheses:: Why apparently superfluous parentheses
1124: may be necessary to avoid incorrect grouping.
1125: * Swallow Semicolon:: Macros that look like functions
1126: but expand into compound statements.
1127: * Side Effects:: Unsafe macros that cause trouble when
1128: arguments contain side effects.
1129: * Self-Reference:: Macros whose definitions use the macros' own names.
1130: * Argument Prescan:: Actual arguments are checked for macro calls
1131: before they are substituted.
1132: * Cascaded Macros:: Macros whose definitions use other macros.
1133:
1134:
1135: File: cpp.info, Node: Misnesting, Next: Macro Parentheses, Prev: Macro Pitfalls, Up: Macro Pitfalls
1136:
1137: Improperly Nested Constructs
1138: ............................
1139:
1140: Recall that when a macro is called with arguments, the arguments are
1141: substituted into the macro body and the result is checked, together
1142: with the rest of the input file, for more macro calls.
1143:
1144: It is possible to piece together a macro call coming partially from
1145: the macro body and partially from the actual arguments. For example,
1146:
1147: #define double(x) (2*(x))
1148: #define call_with_1(x) x(1)
1149:
1150: would expand `call_with_1 (double)' into `(2*(1))'.
1151:
1152: Macro definitions do not have to have balanced parentheses. By
1153: writing an unbalanced open parenthesis in a macro body, it is possible
1154: to create a macro call that begins inside the macro body but ends
1155: outside of it. For example,
1156:
1157: #define strange(file) fprintf (file, "%s %d",
1158: ...
1159: strange(stderr) p, 35)
1160:
1161: This bizarre example expands to `fprintf (stderr, "%s %d", p, 35)'!
1162:
1163:
1164: File: cpp.info, Node: Macro Parentheses, Next: Swallow Semicolon, Prev: Misnesting, Up: Macro Pitfalls
1165:
1166: Unintended Grouping of Arithmetic
1167: .................................
1168:
1169: You may have noticed that in most of the macro definition examples
1170: shown above, each occurrence of a macro argument name had parentheses
1171: around it. In addition, another pair of parentheses usually surround
1172: the entire macro definition. Here is why it is best to write macros
1173: that way.
1174:
1175: Suppose you define a macro as follows,
1176:
1177: #define ceil_div(x, y) (x + y - 1) / y
1178:
1179: whose purpose is to divide, rounding up. (One use for this operation
1180: is to compute how many `int''s are needed to hold a certain number of
1181: `char''s.) Then suppose it is used as follows:
1182:
1183: a = ceil_div (b & c, sizeof (int));
1184:
1185: This expands into
1186:
1187: a = (b & c + sizeof (int) - 1) / sizeof (int);
1188:
1189: which does not do what is intended. The operator-precedence rules of
1190: C make it equivalent to this:
1191:
1192: a = (b & (c + sizeof (int) - 1)) / sizeof (int);
1193:
1194: But what we want is this:
1195:
1196: a = ((b & c) + sizeof (int) - 1)) / sizeof (int);
1197:
1198: Defining the macro as
1199:
1200: #define ceil_div(x, y) ((x) + (y) - 1) / (y)
1201:
1202: provides the desired result.
1203:
1204: However, unintended grouping can result in another way. Consider
1205: `sizeof ceil_div(1, 2)'. That has the appearance of a C expression
1206: that would compute the size of the type of `ceil_div (1, 2)', but in
1207: fact it means something very different. Here is what it expands to:
1208:
1209: sizeof ((1) + (2) - 1) / (2)
1210:
1211: This would take the size of an integer and divide it by two. The
1212: precedence rules have put the division outside the `sizeof' when it
1213: was intended to be inside.
1214:
1215: Parentheses around the entire macro definition can prevent such
1216: problems. Here, then, is the recommended way to define `ceil_div':
1217:
1218: #define ceil_div(x, y) (((x) + (y) - 1) / (y))
1219:
1220:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.