Annotation of gcc/cpp.info-1, revision 1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.