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