Annotation of gcc/cpp.info, revision 1.1

1.1     ! root        1: Info file cpp, produced by texinfo-format-buffer   -*-Text-*-
        !             2: from file cpp.texinfo
        !             3: 
        !             4: This file documents the GNU C Preprocessor.
        !             5: 
        !             6: Copyright (C) 1987 Richard M. Stallman.
        !             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 this
        !            13: manual under the conditions for verbatim copying, provided also that
        !            14: the entire resulting derived work is distributed under the terms of a
        !            15: permission notice identical to this one.
        !            16: 
        !            17: Permission is granted to copy and distribute translations of this manual
        !            18: into another language, under the above conditions for modified versions.
        !            19: 
        !            20: 
        !            21: 
        !            22: File: cpp  Node: Top, Up: (DIR), Next: Global Actions
        !            23: 
        !            24: The C Preprocessor
        !            25: ******************
        !            26: 
        !            27: The C preprocessor is a "macro processor" that is used automatically by
        !            28: the C compiler to transform your program before actual compilation.  It is
        !            29: called a macro processor because it allows you to define "macros",
        !            30: which are brief abbreviations for longer constructs.
        !            31: 
        !            32: The C preprocessor provides four separate facilities that you can use as
        !            33: you see fit:
        !            34: 
        !            35:    * Inclusion of header files.  These are files of declarations that can be
        !            36:      substituted into your program.
        !            37:      
        !            38:    * Macro expansion.  You can define "macros", which are abbreviations
        !            39:      for arbitrary fragments of C code, and then the C preprocessor will
        !            40:      replace the macros with their definitions throughout the program.
        !            41:      
        !            42:    * Conditional compilation.  Using special preprocessor commands, you
        !            43:      can include or exclude parts of the program according to various
        !            44:      conditions.
        !            45:      
        !            46:    * Line control.  If you use a program to combine or rearrange source files into
        !            47:      an intermediate file which is then compiled, you can use line control
        !            48:      to inform the compiler of where each source line originally came from.
        !            49: 
        !            50: C preprocessors vary in some details.  This manual discusses the GNU C
        !            51: preprocessor, the C Compatible Compiler Preprocessor.  The GNU C
        !            52: preprocessor provides a superset of the features of ANSI Standard C.
        !            53: 
        !            54: ANSI Standard C requires the rejection of many harmless constructs commonly
        !            55: used by today's C programs.  Such incompatibility would be inconvenient for
        !            56: users, so the GNU C preprocessor is configured to accept these constructs
        !            57: by default.  Strictly speaking, to get ANSI Standard C, you must use the
        !            58: switches `-T', `-undef' and `-pedantic', but in practice the
        !            59: consequences of having strict ANSI Standard C make it undesirable to do
        !            60: this.  *Note Invocation::.
        !            61: 
        !            62: * Menu:
        !            63: 
        !            64: * Global Actions::    Actions made uniformly on all input files.
        !            65: * Commands::          General syntax of preprocessor commands.
        !            66: * Header Files::      How and why to use header files.
        !            67: * Macros::            How and why to use macros.
        !            68: * Conditionals::      How and why to use conditionals.
        !            69: * Combining Sources:: Use of line control when you combine source files.
        !            70: * Other Commands::    Miscellaneous preprocessor commands.
        !            71: * Output::            Format of output from the C preprocessor.
        !            72: * Invocation::        How to invoke the preprocessor; command switches.
        !            73: * Concept Index::     Index of concepts and terms.
        !            74: * Index::             Index of commands, predefined macros and switches.
        !            75: 
        !            76: 
        !            77: File: cpp  Node: Global Actions, Prev: Top, Up: Top, Next: Commands
        !            78: 
        !            79: Transformations Made Globally
        !            80: =============================
        !            81: 
        !            82: Most C preprocessor features are inactive unless you give specific commands
        !            83: to request their use.  (Preprocessor commands are lines starting with
        !            84: `#'; *Note Commands::).  But there are three transformations that the
        !            85: preprocessor always makes on all the input it receives, even in the absence
        !            86: of commands.
        !            87: 
        !            88:    * All C comments are replaced with single spaces.
        !            89:      
        !            90:    * Backslash-Newline sequences are deleted, no matter where.  This
        !            91:      feature allows you to break long lines for cosmetic purposes without
        !            92:      changing their meaning.
        !            93:      
        !            94:    * Predefined macro names are replaced with their expansions
        !            95:      (*Note Predefined::).
        !            96: 
        !            97: The first two transformations are done *before* nearly all other parsing
        !            98: and before preprocessor commands are recognized.  Thus, for example, you
        !            99: can split a line cosmetically with Backslash-Newline just about anywhere.
        !           100: Even
        !           101: 
        !           102:      #defi\
        !           103:      ne FO\
        !           104:      O 10\
        !           105:      20
        !           106: 
        !           107: is equivalent into `#define FOO 1020'.
        !           108: 
        !           109: But there are a few exceptions to both transformations.
        !           110: 
        !           111:    * C comments and predefined macro names are not recognized inside a
        !           112:      `#include' command in which the file name is delimited with
        !           113:      `<' and `>'.
        !           114:      
        !           115:    * C comments and predefined macro names are never recognized within a
        !           116:      character or string constant.  (Strictly speaking, this is the rule,
        !           117:      not an exception, but it is worth noting here anyway.)
        !           118:      
        !           119:    * Backslash-Newline is not discarded if preceded by an odd number of
        !           120:      additional Backslashes.  This is because the Backslashes quote each
        !           121:      other, leaving the Newline as an ordinary Newline.
        !           122:      
        !           123:           x\\
        !           124:           y
        !           125:      
        !           126:      is an example of a Backslash-Newline that is preserved from deletion for
        !           127:      this reason.
        !           128: 
        !           129: 
        !           130: File: cpp  Node: Commands, Prev: Global Actions, Up: Top, Next: Header Files
        !           131: 
        !           132: Preprocessor Commands
        !           133: =====================
        !           134: 
        !           135: Most preprocessor features are active only if you use preprocessor commands
        !           136: to request their use.
        !           137: 
        !           138: Preprocessor commands are lines in your program that start with `#'.
        !           139: The `#' is followed by an identifier that is the "command name".
        !           140: For example, `#define' is the command that defines a macro.
        !           141: Whitespace is also allowed before and after the `#'.
        !           142: 
        !           143: The set of valid command names is fixed.  Programs cannot define new
        !           144: preprocessor commands.
        !           145: 
        !           146: Some command names require arguments; these make up the rest of the command
        !           147: line and must be separated from the command name by whitespace.  For example,
        !           148: `#define' must be followed by a macro name and the intended expansion
        !           149: of the macro.
        !           150: 
        !           151: A preprocessor command cannot be more than one line in normal circumstances.
        !           152: It may be split cosmetically with Backslash-Newline, but that has no effect
        !           153: on its meaning.  Comments containing Newlines can also divide the command into
        !           154: multiple lines, but the comments are changed to Spaces before the command
        !           155: is interpreted.  The only way a significant Newline can occur in a preprocessor
        !           156: command is within a string constant or character constant.  Note that
        !           157: most C compilers that might be applied to the output from the preprocessor
        !           158: do not accept string or character constants containing Newlines.
        !           159: 
        !           160: The `#' and the command name cannot come from a macro expansion.  For
        !           161: example, if `foo' is defined as a macro expanding to `define',
        !           162: that does not make `#foo' a valid preprocessor command.
        !           163: 
        !           164: 
        !           165: File: cpp  Node: Header Files, Prev: Commands, Up: Top, Next: Macros
        !           166: 
        !           167: Header Files
        !           168: ============
        !           169: 
        !           170: A header file is a file containing C declarations and macro definitions
        !           171: (*Note Macros::) to be shared between several source files.  You request
        !           172: the use of a header file in your program with the C preprocessor command
        !           173: `#include'.
        !           174: 
        !           175: 
        !           176: File: cpp  Node: Header Uses, Prev: Header Files, Up: Header Files, Next: Include Syntax
        !           177: 
        !           178: Uses of Header Files
        !           179: --------------------
        !           180: 
        !           181: Header files serve two kinds of purposes.
        !           182: 
        !           183:    * System header files declare the interfaces to parts of the operating
        !           184:      system.  You include them in your program to supply the definitions
        !           185:      you need to invoke system calls and libraries.
        !           186:      
        !           187:    * Your own header files contain declarations for interfaces between the
        !           188:      source files of your program.  Each time you have a group of related
        !           189:      declarations and macro definitions all or most of which are needed in
        !           190:      several different source files, it is a good idea to create a header
        !           191:      file for them.
        !           192: 
        !           193: Including a header file produces the same results in C compilation as
        !           194: copying the header file into each source file that needs it.  But such
        !           195: copying would be time-consuming and error-prone.  With a header file, the
        !           196: related declarations appear in only one place.  If they need to be changed,
        !           197: they can be changed in one place, and programs that include the header file
        !           198: will automatically use the new version when next recompiled.  The header
        !           199: file eliminates the labor of finding and changing all the copies as well as
        !           200: the risk that a failure to find one copy will result in inconsistencies
        !           201: within a program.
        !           202: 
        !           203: The usual convention is to give header files names that end with `.h'.
        !           204: 
        !           205: 
        !           206: File: cpp  Node: Include Syntax, Prev: Header Uses, Up: Header Files, Next: Include Operation
        !           207: 
        !           208: The `#include' Command
        !           209: ----------------------
        !           210: 
        !           211: Both user and system header files are included using the preprocessor
        !           212: command `#include'.  It has three variants:
        !           213: 
        !           214: `#include <FILE>'     
        !           215:      This variant is used for system header files.  It searches for a file
        !           216:      named FILE in a standard list of system directories.
        !           217:      
        !           218:      {{how can the user find out about/control this list?}}
        !           219:      
        !           220:      The parsing of this form of `#include' is slightly special
        !           221:      because comments are not recognized within the `<...>'.
        !           222:      Thus, in `#include <x/*y>' the `/*' does not start a comment
        !           223:      and the command specifies inclusion of a system header file named
        !           224:      `x/*y'.  Of course, a header file with such a name is unlikely to
        !           225:      exist on Unix, where shell wildcard features would make it hard to
        !           226:      manipulate.
        !           227:      
        !           228:      FILE may not contain a `>' character.  It may, however,
        !           229:      contain a `<' character.
        !           230:      
        !           231: `#include "FILE"'     
        !           232:      This variant is used for header files of your own program.  It
        !           233:      searches for a file named FILE first in the current working
        !           234:      directory, and then in a specified list of directories for user
        !           235:      header files, and finally in the same directories used for system header
        !           236:      files.  The current working directory is tried first because it is
        !           237:      presumed to be the location of the files of the program being
        !           238:      compiled.  The other directories for user header files are specified
        !           239:      with the command switch `-I' (*Note Invocation::).
        !           240:      
        !           241:      FILE may not contain `"' characters unless they are
        !           242:      preceded by Backslashes.  Note, however, that such Backslashes are
        !           243:      *not* discarded when searching for the file.  None of the character
        !           244:      escape sequences appropriate to string constants in C is processed;
        !           245:      all Backslashes are significant.  Thus, `#include "x\n\"y"'
        !           246:      specifies a filename containing two Backslashes.  It is not clear why
        !           247:      this behavior is ever useful, but the ANSI standard specifies it.
        !           248:      
        !           249: `#include ANYTHING ELSE'     
        !           250:      This variant is called a "computed #include".  Any `#include'
        !           251:      command whose argument does not fit the above two forms is a computed
        !           252:      include.  ANYTHING ELSE is checked for macro calls, which are
        !           253:      expanded (*Note Macros::).  When this is done, the result must fit
        !           254:      one of the above two variants.
        !           255:      
        !           256:      This feature allows you to define a macro which controls the file name
        !           257:      to be used at a later point in the program.  One application of this
        !           258:      is to allow a site-configuration file for your program to specify the
        !           259:      names of the system include files to be used.  This can help in
        !           260:      porting the program to various operating systems in which the
        !           261:      necessary system header files are found in different places.
        !           262: 
        !           263: 
        !           264: File: cpp  Node: Include Operation, Prev: Include Syntax, Up: Header Files
        !           265: 
        !           266: How `#include' Works
        !           267: --------------------
        !           268: 
        !           269: The `#include' command works by directing the C preprocessor to scan
        !           270: the specified file as input before continuing with the rest of the current
        !           271: file.  The output from the preprocessor contains the output already
        !           272: generated, followed by the output resulting from the included file,
        !           273: followed by the output that comes from the text after the `#include'
        !           274: command.  For example, given two files as follows:
        !           275: 
        !           276:      /* File program.c */
        !           277:      int x;
        !           278:      #include "header.h"
        !           279:      
        !           280:      main ()
        !           281:      {
        !           282:        printf (test ());
        !           283:      }
        !           284:      
        !           285:      
        !           286:      /* File header.h */
        !           287:      char *test ();
        !           288: 
        !           289: the output generated by the C preprocessor for `program.c' as input
        !           290: would be
        !           291: 
        !           292:      int x;
        !           293:      char *test ();
        !           294:      
        !           295:      main ()
        !           296:      {
        !           297:        printf (test ());
        !           298:      }
        !           299: 
        !           300: Included files are not limited to declarations and macro definitions; they
        !           301: are merely the typical use.  Any fragment of a C program can be included
        !           302: from another file.  The include file could even contain the beginning of a
        !           303: statement that is concluded in the containing file, or the end of a
        !           304: statement that was started in the including file.  However, a comment or a
        !           305: string or character constant may not start in the included file and finish
        !           306: in the including file.  An unterminated comment, string constant or
        !           307: character constant in an included file is considered to end (with an error
        !           308: message) at the end of the file.
        !           309: 
        !           310: The line following the `#include' command is always treated as a
        !           311: separate line by the C preprocessor even if the included file lacks a final
        !           312: newline.
        !           313: 
        !           314: 
        !           315: File: cpp  Node: Macros, Prev: Header Files, Up: Top, Next: Conditionals
        !           316: 
        !           317: Macros
        !           318: ======
        !           319: 
        !           320: A macro is a sort of abbreviation which you can define once and then
        !           321: use later.  There are many complicated features associated with macros
        !           322: in the C preprocessor.
        !           323: 
        !           324: * Menu:
        !           325: 
        !           326: * Simple Macros::    Macros that always expand the same way.
        !           327: * Argument Macros::  Macros that accept arguments that are substituted
        !           328:                        into the macro expansion.
        !           329: * Predefined::       Predefined macros that are always available.
        !           330: * Stringification::  Macro arguments converted into string constants.
        !           331: * Concatenation::    Building tokens from parts taken from macro arguments.
        !           332: * Undefining::       Cancelling a macro's definition.
        !           333: * Redefining::       Changing a macro's definition.
        !           334: * Macro Pitfalls::   Macros can confuse the unwary.  Here we explain
        !           335:                        several common problems and strange features.
        !           336: 
        !           337: 
        !           338: File: cpp  Node: Simple Macros, Prev: Macros, Up: Macros, Next: Argument Macros
        !           339: 
        !           340: Simple Macros
        !           341: -------------
        !           342: 
        !           343: A "simple macro" is a kind of abbreviation.  It is a name which stands
        !           344: for a fragment of code.
        !           345: 
        !           346: Before you can use a macro, you must "define" it explicitly with the
        !           347: `#define' command.  `#define' is followed by the name of the
        !           348: macro and then the code it should be an abbreviation for.  For example,
        !           349: 
        !           350:      #define BUFFER_SIZE 1020
        !           351: 
        !           352: defines a macro named `BUFFER_SIZE' as an abbreviation for the text
        !           353: `1020'.  Therefore, if somewhere after this `#define' command
        !           354: there comes a C statement of the form
        !           355: 
        !           356:      foo = (char *) xmalloc (BUFFER_SIZE);
        !           357: 
        !           358: then the C preprocessor will recognize and "expand" the macro
        !           359: `BUFFER_SIZE', resulting in
        !           360: 
        !           361:      foo = (char *) xmalloc (1020);
        !           362: 
        !           363: the definition must be a single line; however, it may not end in the
        !           364: middle of a multi-line string constant or character constant.
        !           365: 
        !           366: The use of all upper case for macro names is a standard convention.
        !           367: Programs are easier to read when it is possible to tell at a glance which
        !           368: names are macros.
        !           369: 
        !           370: Normally, a macro definition must be a single line, like all C preprocessor
        !           371: commands.  (You can split a long macro definition cosmetically with
        !           372: Backslash-Newline.)  There is one exception: Newlines can be included in
        !           373: the macro definition if within a string or character constant.  By the same
        !           374: token, it is not possible for a macro definition to contain an unbalanced
        !           375: quote character; the definition automatically extends to include the
        !           376: matching quote character that ends the string or character constant.
        !           377: Comments within a macro definition may contain Newlines, which make no
        !           378: difference since the comments are entirely replaced with Spaces regardless
        !           379: of their contents.
        !           380: 
        !           381: Aside from the above, there is no restriction on what can go in a macro
        !           382: body.  Parentheses need not balance.  The body need not resemble valid C
        !           383: code.  (Of course, you might get error messages from the C compiler when
        !           384: you use the macro.)
        !           385: 
        !           386: The C preprocessor scans your program sequentially, so macro definitions
        !           387: take effect at the place you write them.  Therefore, the following input to
        !           388: the C preprocessor
        !           389: 
        !           390:      foo = X;
        !           391:      #define X 4
        !           392:      bar = X;
        !           393: 
        !           394: produces as output
        !           395: 
        !           396:      foo = X;
        !           397:      
        !           398:      bar = 4;
        !           399: 
        !           400: After the preprocessor expands a macro name, the macro's definition body is
        !           401: appended to the front of the remaining input, and the check for macro calls
        !           402: continues.  Therefore, the macro body can contain calls to other macros.
        !           403: For example, after
        !           404: 
        !           405:      #define BUFSIZE 1020
        !           406:      #define TABLESIZE BUFSIZE
        !           407: 
        !           408: the name `TABLESIZE' when used in the program would go through two
        !           409: stages of expansion, resulting ultimately in `1020'.
        !           410: 
        !           411: This is not at all the same as defining `TABLESIZE' to be `1020'.
        !           412: The `#define' for `TABLESIZE' uses exactly the body you
        !           413: specify---in this case, `BUFSIZE'---and does not check to see whether
        !           414: it too is the name of a macro.  It's only when you *use* `TABLESIZE'
        !           415: that the result of its expansion is checked for more macro names.
        !           416: *Note Cascaded Macros::.
        !           417: 
        !           418: 
        !           419: File: cpp  Node: Argument Macros, Prev: Simple Macros, Up: Macros, Next: Predefined
        !           420: 
        !           421: Macros with Arguments
        !           422: ---------------------
        !           423: 
        !           424: A simple macro always stands for exactly the same text, each time it is
        !           425: used.  Macros can be more flexible when they accept "arguments".
        !           426: Arguments are fragments of code that you supply each time the macro is
        !           427: used.  These fragments are included in the expansion of the macro according
        !           428: to the directions in the macro definition.
        !           429: 
        !           430: To define a macro that uses arguments, you write a `#define' command
        !           431: with a list of "argument names" in parentheses after the name of the
        !           432: macro.  The argument names may be any valid C identifiers, separated by
        !           433: commas and optionally whitespace.  The open-parenthesis must follow the
        !           434: macro name immediately, with no space in between.
        !           435: 
        !           436: For example, here is a macro that computes the minimum of two numeric
        !           437: values:
        !           438: 
        !           439:      #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
        !           440: 
        !           441: To use a macro that expects arguments, you write the name of the macro
        !           442: followed by a list of "actual arguments" in parentheses. separated by
        !           443: commas.  The number of actual arguments you give must match the number of
        !           444: arguments the macro expects.   Examples of use of the macro `min'
        !           445: include `min (1, 2)' and `min (x + 28, *p)'.
        !           446: 
        !           447: The expansion text of the macro depends on the arguments you use.
        !           448: Each of the argument names of the macro is replaced, throughout the
        !           449: macro definition, with the corresponding actual argument.  Using the
        !           450: same macro `min' defined above, `min (1, 2)' expands into
        !           451: 
        !           452:      ((1) < (2) ? (1) : (2))
        !           453: 
        !           454: where `1' has been substituted for `X' and `2' for `Y'.
        !           455: 
        !           456: Likewise, `min (x + 28, *p)' expands into
        !           457: 
        !           458:      ((x + 28) < (*p) ? (x + 28) : (*p))
        !           459: 
        !           460: Parentheses in the actual arguments must balance; a comma within
        !           461: parentheses does not end an argument.  However, there is no requirement for
        !           462: brackets or braces to balance; thus, if you want to supply `array[x =
        !           463: y, x + 1]' as an argument, you must write it as `array[(x = y, x +
        !           464: 1)]', which is equivalent C code.
        !           465: 
        !           466: After the actual arguments are substituted into the macro body, the entire
        !           467: result is appended to the front of the remaining input, and the check for
        !           468: macro calls continues.  Therefore, the actual arguments can contain calls
        !           469: to other macros, either with or without arguments, or even to the same
        !           470: macro.  The macro body can also contain calls to other macros.  For
        !           471: example, `min (min (a, b), c)' expands into
        !           472: 
        !           473:      ((((a) < (b) ? (a) : (b))) < (c)
        !           474:       ? (((a) < (b) ? (a) : (b)))
        !           475:       : (c))
        !           476: 
        !           477: (Line breaks shown here for clarity would not actually be generated.)
        !           478: 
        !           479: If you use the macro name followed by something other than an
        !           480: open-parenthesis, it is not a call to the macro, and the preprocessor does
        !           481: not change what you have written.  Therefore, it is possible for the same
        !           482: name to be a variable or function in your program as well as a macro,
        !           483: and you can choose in each instance whether to refer to the macro
        !           484: (if an actual argument list follows) or the variable or function (if
        !           485: an argument list does not follow).
        !           486: 
        !           487: Such dual use of one name could be confusing and should be avoided
        !           488: except when the two meanings are effectively synonymous: that is, when the
        !           489: name is both a macro and a function and the two have similar effects.  You
        !           490: can think of the name simply as as a function; use of the name for purposes
        !           491: other than calling it (such as, to take the address) will refer to the
        !           492: function, while calls will expand the macro and generate better but
        !           493: equivalent code.  For example, you can use a function named `min' in
        !           494: the same source file that defines the macro.  If you write `&min' with
        !           495: no argument list, you refer to the function.  If you write `min (x,
        !           496: bb)', with an argument list, the macro is expanded.  If you write
        !           497: `(min) (a, bb)', where the name `min' is not followed by an
        !           498: open-parenthesis, the macro is not expanded, so you wind up with a call to
        !           499: the function `min'.
        !           500: 
        !           501: It is not allowed to define the same name as both a simple macro and
        !           502: a macro with arguments.
        !           503: 
        !           504: In the definition of a macro with arguments, the list of argument names
        !           505: must follow the macro name immediately with no space in between.  If there
        !           506: is a space after the macro name, the macro is defined as taking no
        !           507: arguments, and all the rest of the name is taken to be the expansion.
        !           508: The reason for this is that it is often useful to define a macro that
        !           509: takes no arguments and whose definition begins with an identifier in
        !           510: parentheses.  This rule about spaces makes it possible for you to do either
        !           511: 
        !           512:      #define FOO(x) - 1 / (x)
        !           513: 
        !           514: which defines `FOO' to take an argument and expand into minus the
        !           515: reciprocal of that argument, or
        !           516: 
        !           517:      #define BAR (x) - 1 / (x)
        !           518: 
        !           519: which defines `BAR' to take no argument and always expand into
        !           520: `(x) - 1 / (x)'.
        !           521: 
        !           522: 
        !           523: File: cpp  Node: Predefined, Prev: Argument Macros, Up: Macros, Next: Stringification
        !           524: 
        !           525: Predefined Macros
        !           526: -----------------
        !           527: 
        !           528: Several simple macros are predefined.  You can use them without giving
        !           529: definitions for them.  They fall into two classes: standard macros and
        !           530: system-specific macros.
        !           531: 
        !           532: * Menu:
        !           533: 
        !           534: * Standard Predefined::     Standard predefined macros.
        !           535: * Nonstandard Predefined::  Nonstandard predefined macros.
        !           536: 
        !           537: 
        !           538: File: cpp  Node: Standard Predefined, Prev: Predefined, Up: Predefined, Next: Nonstandard Predefined
        !           539: 
        !           540: Standard Predefined Macros
        !           541: ..........................
        !           542: 
        !           543: The standard predefined macros are available with the same meanings on all
        !           544: operating systems and all kinds of machines.  Their names all start and end
        !           545: with double underscores.  Here is a table of them.
        !           546: 
        !           547: `__FILE__'     
        !           548:      This macro expands to the name of the current input file, in the form
        !           549:      of a C string constant.
        !           550:      
        !           551: `__LINE__'     
        !           552:      This macro expands to the current input line number, in the form of a
        !           553:      decimal integer constant.  While we call it a predefined macro, it's
        !           554:      a pretty strange macro, since its "definition" changes with each
        !           555:      new line of source code.
        !           556:      
        !           557:      This and `__FILE__' are useful in generating an error message to
        !           558:      report an inconsistency detected by the program; the message can state
        !           559:      the source line at which the inconsistency was detected.  For example,
        !           560:      
        !           561:           fprintf (stderr, "Internal error: negative string length "
        !           562:                            "%d at %s, line %d.",
        !           563:                    length, __FILE__, __LINE__);
        !           564:      
        !           565:      A `#include' command changes the expansions of `__FILE__'
        !           566:      and `__LINE__' to correspond to the included file.  At the end of
        !           567:      that file, when processing resumes on the input file that contained
        !           568:      the `#include' command, the expansions of `__FILE__' and
        !           569:      `__LINE__' revert to the values they had before the
        !           570:      `#include' (but `__LINE__' is then incremented by one as
        !           571:      processing moves to the line after the `#include').
        !           572:      
        !           573:      The expansions of both `__FILE__' and `__LINE__' are altered
        !           574:      if a `#line' command is used.  *Note Combining Sources::.
        !           575:      
        !           576: `__DATE__'     
        !           577:      This macro expands to a string constant that describes the date on
        !           578:      which the preprocessor is being run.  The string constant contains
        !           579:      eleven characters and looks like `"Jan 29 1987"' or `"Apr
        !           580:       1 1905"'.
        !           581:      
        !           582: `__TIME__'     
        !           583:      This macro expands to a string constant that describes the time at
        !           584:      which the preprocessor is being run.  The string constant contains
        !           585:      eight characters and looks like `"23:59:01"'.
        !           586:      
        !           587: `__STDC__'     
        !           588:      This macro expands to the constant 1, to signify that this is ANSI
        !           589:      Standard C.  (Whether that is actually true depends on what C compiler
        !           590:      will operate on the output from the preprocessor.)
        !           591: 
        !           592: 
        !           593: File: cpp  Node: Nonstandard Predefined, Prev: Standard Predefined, Up: Predefined
        !           594: 
        !           595: Nonstandard Predefined Macros
        !           596: .............................
        !           597: 
        !           598: The C preprocessor normally has several predefined macros that vary between
        !           599: machines because their purpose is to indicate what type of system and
        !           600: machine is in use.  This manual, being for all systems and machines, cannot
        !           601: tell you exactly what their names are; instead, we offer a list of some
        !           602: typical ones.
        !           603: 
        !           604: Some nonstandard predefined macros describe the operating system in use,
        !           605: with more or less specificity.  For example,
        !           606: 
        !           607: `unix'     
        !           608:      `unix' is normally predefined on all Unix systems.
        !           609:      
        !           610: `BSD'     
        !           611:      `BSD' is predefined on recent versions of Berkeley Unix
        !           612:      (perhaps only in version 4.3).
        !           613: 
        !           614: Other nonstandard predefined macros describe the kind of CPU, with more or
        !           615: less specificity.  For example,
        !           616: 
        !           617: `vax'     
        !           618:      `vax' is predefined on Vax computers.
        !           619:      
        !           620: `mc68000'     
        !           621:      `mc68000' is predefined on most computers whose CPU is a 68000,
        !           622:      68010 or 68020.
        !           623:      
        !           624: `m68k'     
        !           625:      `m68k' is also predefined on most computers whose CPU is a 68000.
        !           626:      68010 or 68020; however, some makers use `mc68000' and some use
        !           627:      `m68k'.  Some predefine both names.
        !           628:      
        !           629: `M68020'     
        !           630:      `M68020' has been observed to be predefined on some systems that
        !           631:      use 68020 CPUs---in addition to `mc68000' and `m68k' that
        !           632:      are less specific.
        !           633: 
        !           634: Yet other nonstandard predefined macros describe the manufacturer of
        !           635: the system.  For example,
        !           636: 
        !           637: `sun'     
        !           638:      `sun' is predefined on all models of Sun computers.
        !           639:      
        !           640: `pyr'     
        !           641:      `sun' is predefined on all models of Pyramid computers.
        !           642: 
        !           643: These predefined symbols are not only nonstandard, they are contrary to the
        !           644: ANSI standard because their names do not start with underscores.  However,
        !           645: the GNU C preprocessor would be useless if it did not predefine the same
        !           646: names that are normally predefined on the system and machine you are using.
        !           647: Even system header files check the predefined names and will generate
        !           648: incorrect declarations if they do not find the names that are expected.
        !           649: 
        !           650: The set of nonstandard predefined names in the GNU C preprocessor is controlled
        !           651: by the macro `PREDEFS', which should be set with a `-D' switch
        !           652: in the `Makefile' to a string constant containing names separated
        !           653: by commas.  The Doublequotes that delimit the string constant must be
        !           654: escaped with Backslashes to get them through the shell.  For example,
        !           655: `\"unix,sun,m68k,mc68000\"' is used on Suns.
        !           656: 
        !           657: 
        !           658: File: cpp  Node: Stringification, Prev: Predefined, Up: Macros, Next: Concatenation
        !           659: 
        !           660: Stringification
        !           661: ---------------
        !           662: 
        !           663: "Stringification" means turning an code fragment into a string constant
        !           664: whose contents are the text for the code fragment.  For example,
        !           665: stringifying `foo (z)' results in `"foo (z)"'.
        !           666: 
        !           667: In the C preprocessor, stringification is an option available when macro
        !           668: arguments are substituted into the macro definition.  In the body of the
        !           669: definition, when an argument name appears, the character `#' before
        !           670: the name specifies stringification of the corresponding actual argument
        !           671: when it is substituted at that point in the definition.  The same argument
        !           672: may be substituted in other places in the definition without
        !           673: stringification if the argument name appears in those places with no
        !           674: `#'.
        !           675: 
        !           676: Here is an example of a macro definition that uses stringification:
        !           677: 
        !           678:      #define WARN_IF(EXP) \
        !           679:      do { if (EXP) fprintf (stderr, "Warning: " #EXP "\n"); } while (0)
        !           680: 
        !           681: Here the actual argument for `EXP' is substituted once as given,
        !           682: into the `if' statement, and once as stringified, into the
        !           683: argument to `fprintf'.  The `do' and `while (0)' are
        !           684: a kludge to make it possible to write `WARN_IF (ARG);',
        !           685: which the resemblance of `WARN_IF' to a function would make
        !           686: C programmers want to do; *Note Swallow Semicolon::).
        !           687: 
        !           688: The stringification feature is limited to transforming one macro argument
        !           689: into one string constant: there is no way to combine the argument with
        !           690: other text and then stringify it all together.  But the example above shows
        !           691: how an equivalent result can be obtained in ANSI Standard C using the
        !           692: feature that adjacent string constants are concatenated as one string
        !           693: constant.  The preprocessor stringifies `EXP''s actual argument
        !           694: into a separate string constant, resulting in text like
        !           695: 
        !           696:      do { if (x == 0) fprintf (stderr, "Warning: " "x == 0" "\n"); } while (0)
        !           697: 
        !           698: but the C compiler then sees three consecutive string constants and
        !           699: concatenates them into one, producing effectively
        !           700: 
        !           701:      do { if (x == 0) fprintf (stderr, "Warning: x == 0\n"); } while (0)
        !           702: 
        !           703: Stringification in C involves more than putting doublequote characters
        !           704: around the fragment; it is necessary to put backslashes in front of all
        !           705: doublequote characters, and all backslashes in string and character
        !           706: constants, in order to get a valid C string constant with the proper
        !           707: contents.  Thus, stringifying `p = "foo\n";' results in `"p =
        !           708: \"foo\\n\";"'.  However, backslashes that are not inside of string or
        !           709: character constants are not duplicated: `\n' by itself stringifies to
        !           710: `"\n"'.
        !           711: 
        !           712: Whitespace (including comments) in the text being stringified is handled
        !           713: according to precise rules.  All leading and trailing whitespace is ignored.
        !           714: Any sequence of whitespace in the middle of the text is converted to
        !           715: a single space in the stringified result.
        !           716: 
        !           717: 
        !           718: File: cpp  Node: Concatenation, Prev: Stringification, Up: Macros, Next: Undefining
        !           719: 
        !           720: Concatenation
        !           721: -------------
        !           722: 
        !           723: "Concatenation" means joining two strings into one.  In the context
        !           724: of macro expansion, concatenation refers to joining two lexical units
        !           725: into one longer one.  Specifically, an actual argument to the macro can be
        !           726: concatenated with another actual argument or with fixed text to produce
        !           727: a longer name.  The longer name might be the name of a function,
        !           728: variable or type, or a C keyword; it might even be the name of another
        !           729: macro, in which case it will be expanded.
        !           730: 
        !           731: When you define a macro, you request concatenation with the special
        !           732: operator `##' in the macro body.  When the macro is called,
        !           733: after actual arguments are substituted, all `##' operators are
        !           734: deleted, and so is any whitespace next to them (including whitespace
        !           735: that was part of an actual argument).  The result is to concatenate
        !           736: the syntactic tokens on either side of the `##'.
        !           737: 
        !           738: Consider a C program that interprets named commands.  There probably needs
        !           739: to be a table of commands, perhaps an array of structures declared as
        !           740: follows:
        !           741: 
        !           742:      struct command
        !           743:      {
        !           744:        char *name;
        !           745:        void (*function) ();
        !           746:      };
        !           747:      
        !           748:      struct command commands[] =
        !           749:      {
        !           750:        { "quit", quit_command},
        !           751:        { "help", help_command},
        !           752:        ...
        !           753:      };
        !           754: 
        !           755: It would be cleaner not to have to give each command name twice, once in
        !           756: the string constant and once in the function name.  A macro which takes the
        !           757: name of a command as an argument can make this unnecessary.  The string
        !           758: constant can be created with stringification, and the function name by
        !           759: concatenating the argument with `_command'.  Here is how it is done:
        !           760: 
        !           761:      #define COMMAND(NAME)  { #NAME, NAME ## _command }
        !           762:      
        !           763:      struct command commands[] =
        !           764:      {
        !           765:        COMMAND (quit),
        !           766:        COMMAND (help),
        !           767:        ...
        !           768:      };
        !           769: 
        !           770: The usual case of concatenation is concatenating two names (or a name and a
        !           771: number) into a longer name.  But this isn't the only valid case.  It is
        !           772: also possible to concatenate two numbers (or a number and a name, such as
        !           773: `1.5' and `e3') into a number.  Also, multi-character operators
        !           774: such as `+=' can be formed by concatenation.  In some cases it is even
        !           775: possible to piece together a string constant.  However, two pieces of text
        !           776: that don't together form a valid lexical unit cannot be concatenated.  For
        !           777: example, concatenation with `x' on one side and `+' on the other
        !           778: is not meaningful because those two characters can't fit together in any
        !           779: lexical unit of C.  The ANSI standard says that such attempts at
        !           780: concatenation are undefined, but in the GNU C preprocessor it is well
        !           781: defined: it puts the `x' and `+' side by side with no particular
        !           782: special results.
        !           783: 
        !           784: Keep in mind that the C preprocessor converts comments to whitespace before
        !           785: macros are even considered.  Therefore, you cannot create a comment by
        !           786: concatenating `/' and `*': the `/*' sequence that starts a
        !           787: comment is not a lexical unit, but rather the beginning of a "long" space
        !           788: character.  Also, you can freely use comments next to a `##' in a
        !           789: macro definition, or in actual arguments that will be concatenated, because
        !           790: the comments will be converted to spaces at first sight, and concatenation
        !           791: will later discard the spaces.
        !           792: 
        !           793: 
        !           794: File: cpp  Node: Undefining, Prev: Concatenation, Up: Macros, Next: Redefining
        !           795: 
        !           796: Undefining Macros
        !           797: -----------------
        !           798: 
        !           799: To "undefine" a macro means to cancel its definition.  This is done
        !           800: with the `#undef' command.  `#undef' is followed by the macro
        !           801: name to be undefined.
        !           802: 
        !           803: Like definition, undefinition occurs at a specific point in the source
        !           804: file, and it applies starting from that point.  The name ceases to be a
        !           805: macro name, and from that point on it is treated by the preprocessor as if
        !           806: it had never been a macro name.
        !           807: 
        !           808: For example,
        !           809: 
        !           810:      #define FOO 4
        !           811:      x = FOO;
        !           812:      #undef FOO
        !           813:      x = FOO;
        !           814: 
        !           815: expands into
        !           816: 
        !           817:      x = 4;
        !           818:      
        !           819:      x = FOO;
        !           820: 
        !           821: In this example, `FOO' had better be a variable or function as well
        !           822: as (temporarily) a macro, in order for the result of the expansion to be
        !           823: valid C code.
        !           824: 
        !           825: The same form of `#undef' command will cancel definitions with
        !           826: arguments or definitions that don't expect arguments.  The `#undef'
        !           827: command has no effect when used on a name not currently defined as a macro.
        !           828: 
        !           829: 
        !           830: File: cpp  Node: Redefining, Prev: Undefining, Up: Macros, Next: Macro Pitfalls
        !           831: 
        !           832: Redefining Macros
        !           833: -----------------
        !           834: 
        !           835: "Redefining" a macro means defining (with `#define') a name that
        !           836: is already defined as a macro.
        !           837: 
        !           838: A redefinition is trivial if the new definition is transparently identical
        !           839: to the old one.  You probably wouldn't deliberately write a trivial
        !           840: redefinition, but they can happen automatically when a header file is
        !           841: included more than once (*Note Header Files::), so they are accepted
        !           842: silently and without effect.
        !           843: 
        !           844: Nontrivial redefinition is considered likely to be an error, so
        !           845: it provokes a warning message from the preprocessor.  However, sometimes it
        !           846: is useful to change the definition of a macro in mid-compilation.  You can
        !           847: inhibit the warning by undefining the macro with `#undef' before the
        !           848: second definition.
        !           849: 
        !           850: In order for a reefinition to be trivial, the new definition must exactly match
        !           851: the one already in effect, with two possible exceptions:
        !           852: 
        !           853:    * Whitespace may be added or deleted at the beginning or the end.
        !           854:      
        !           855:    * Whitespace may be changed in the middle (but not inside strings).
        !           856:      However, it may not be eliminated entirely, and it may not be added
        !           857:      where there was no whitespace at all.
        !           858: 
        !           859: Recall that a comment counts as whitespace.
        !           860: 
        !           861: 
        !           862: File: cpp  Node: Macro Pitfalls, Prev: Redefining, Up: Macros
        !           863: 
        !           864: Pitfalls and Subtleties of Macros
        !           865: ---------------------------------
        !           866: 
        !           867: In this section we describe some special rules that apply to macros and
        !           868: macro expansion, and point out certain cases in which the rules have 
        !           869: counterintuitive consequences that you must watch out for.
        !           870: 
        !           871: * Menu:
        !           872: 
        !           873: * Misnesting::        Macros can contain unmatched parentheses.
        !           874: * Macro Parentheses:: Why apparently superfluous parentheses
        !           875:                          may be necessary to avoid incorrect grouping.
        !           876: * Swallow Semicolon:: Macros that look like functions
        !           877:                          but expand into compound statements.
        !           878: * Side Effects::      Unsafe macros that cause trouble when
        !           879:                          arguments contain side effects.
        !           880: * Self-Reference::    Macros whose definitions use the macros' own names.
        !           881: * Argument Prescan::  Actual arguments are checked for macro calls
        !           882:                          before they are substituted.
        !           883: * Cascaded Macros::   Macros whose definitions use other macros.
        !           884: 
        !           885: 
        !           886: File: cpp  Node: Misnesting, Prev: Macro Pitfalls, Up: Macro Pitfalls, Next: Macro Parentheses
        !           887: 
        !           888: Improperly Nested Constructs
        !           889: ............................
        !           890: 
        !           891: Recall that when a macro is called with arguments, the arguments are
        !           892: substituted into the macro body and the result is checked, together with
        !           893: the rest of the input file, for more macro calls.
        !           894: 
        !           895: It is possible to piece together a macro call coming partially from the
        !           896: macro body and partially from the actual arguments.  For example,
        !           897: 
        !           898:      #define double(x) (2*(x))
        !           899:      #define call_with_1(x) x(1)
        !           900: 
        !           901: would expand `call_with_1 (double)' into `(2*(1))'.
        !           902: 
        !           903: Macro definitions do not have to have balanced parentheses.  By writing an
        !           904: unbalanced open parenthesis in a macro body, it is possible to create a
        !           905: macro call that begins inside the macro body but ends outside of it.  For
        !           906: example,
        !           907: 
        !           908:      #define strange(file) fprintf (file, "%s %d",
        !           909:      ...
        !           910:      strange(stderr) p, 35)
        !           911: 
        !           912: This bizarre example expands to `fprintf (stderr, "%s %d", p, 35)'!
        !           913: 
        !           914: 
        !           915: File: cpp  Node: Macro Parentheses, Prev: Misnesting, Up: Macro Pitfalls, Next: Swallow Semicolon
        !           916: 
        !           917: Unintended Grouping of Arithmetic
        !           918: .................................
        !           919: 
        !           920: You may have noticed that in most of the macro definition examples shown
        !           921: above, each occurrence of a macro argument name had parentheses around it.
        !           922: In addition, another pair of parentheses usually surround the entire macro
        !           923: definition.  Here is why it is best to write macros that way.
        !           924: 
        !           925: Suppose you define a macro as follows
        !           926: 
        !           927:      #define ceil_div(x, y) (x + y - 1) / y
        !           928: 
        !           929: whose purpose is to divide, rounding up.  (One use for this
        !           930: operation is to compute how many `int''s are needed to hold
        !           931: a certain number of `char''s.)  Then suppose it is used as follows:
        !           932: 
        !           933:      a = ceil_div (b & c, sizeof (int));
        !           934: 
        !           935: This expands into
        !           936: 
        !           937:      a = (b & c + sizeof (int) - 1) / sizeof (int);
        !           938: 
        !           939: which is does not do what is intended the operator-precedence rules of
        !           940: C make it equivalent to
        !           941: 
        !           942:      a = (b & (c + sizeof (int) - 1)) / sizeof (int);
        !           943: 
        !           944: What we want is
        !           945: 
        !           946:      a = ((b & c) + sizeof (int) - 1)) / sizeof (int);
        !           947: 
        !           948: Defining the macro as
        !           949: 
        !           950:      #define ceil_div(x, y) ((x) + (y) - 1) / (y)
        !           951: 
        !           952: provides the desired result.
        !           953: 
        !           954: However, unintended grouping can result in another way.  Consider
        !           955: `sizeof ceil_div(1, 2)'.  That has the appearance of a C expression
        !           956: that would compute the size of the type of `ceil_div (1, 2)', but in
        !           957: fact it means something very different.  Here is what it expands to:
        !           958: 
        !           959:      sizeof ((1) + (2) - 1) / (2)
        !           960: 
        !           961: This would take the size of an integer and divide it by two.  The precedence
        !           962: rules have put the division outside the `sizeof' when it was intended
        !           963: to be inside.
        !           964: 
        !           965: Parentheses around the entire macro definition can prevent such problems.
        !           966: Here, then, is the recommended way to define `ceil_div':
        !           967: 
        !           968:      #define ceil_div(x, y) (((x) + (y) - 1) / (y))
        !           969: 
        !           970: 
        !           971: File: cpp  Node: Swallow Semicolon, Prev: Macro Parentheses, Up: Macro Pitfalls, Next: Side Effects
        !           972: 
        !           973: Swallowing the Semicolon
        !           974: ........................
        !           975: 
        !           976: Often it is desirable to define a macro that expands into a compound
        !           977: statement.  Consider, for example, the following macro, that advances a
        !           978: pointer (the argument `p' says where to find it) across whitespace
        !           979: characters:
        !           980: 
        !           981:      #define SKIP_SPACES (p, limit)  \
        !           982:      { register char *lim = (limit); \
        !           983:        while (p != lim) {            \
        !           984:          if (*p++ != ' ') {          \
        !           985:            p--; break; }}}
        !           986: 
        !           987: Here Backslash-Newline is used to split the macro definition, which must
        !           988: be a single line, so that it resembles the way such C code would be
        !           989: layed out if not part of a macro definition.
        !           990: 
        !           991: A call to this macro might be `SKIP_SPACES (p, lim)'.  Strictly
        !           992: speaking, the call expands to a compound statement, which is a complete
        !           993: statement with no need for a semicolon to end it.  But it looks like a
        !           994: function call.  So it minimizes confusion if you can use it like a function
        !           995: call, writing a semicolon afterward, as in `SKIP_SPACES (p, lim);'
        !           996: 
        !           997: But this can cause trouble before `else' statements, because the
        !           998: semicolon is actually a null statement.  Suppose you write
        !           999: 
        !          1000:      if (*p != 0)
        !          1001:        SKIP_SPACES (p, lim);
        !          1002:      else ...
        !          1003: 
        !          1004: The presence of two statements---the compound statement and a null
        !          1005: statement---in between the `if' condition and the `else'
        !          1006: makes invalid C code.
        !          1007: 
        !          1008: The definition of the macro `SKIP_SPACES' can be altered to solve
        !          1009: this problem, using a `do ... while' statement.  Here is how:
        !          1010:   
        !          1011:      #define SKIP_SPACES (p, limit)     \
        !          1012:      do { register char *lim = (limit); \
        !          1013:           while (p != lim) {            \
        !          1014:             if (*p++ != ' ') {          \
        !          1015:               p--; break; }}}           \
        !          1016:      while (0)
        !          1017: 
        !          1018: Now `SKIP_SPACES (p, lim);' expands into
        !          1019: 
        !          1020:      do {...} while (0);
        !          1021: 
        !          1022: which is one statement.
        !          1023: 
        !          1024: 
        !          1025: File: cpp  Node: Side Effects, Prev: Swallow Semicolon, Up: Macro Pitfalls, Next: Self-Reference
        !          1026: 
        !          1027: Duplication of Side Effects
        !          1028: ...........................
        !          1029: 
        !          1030: Let's consider a call to the macro `min':
        !          1031: 
        !          1032:      #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
        !          1033:      ...
        !          1034:      next = min (x + y, foo (z));
        !          1035: 
        !          1036: expands into
        !          1037: 
        !          1038:      next = ((x + y) < (foo (z)) ? (x + y) : (foo (z)));
        !          1039: 
        !          1040: where `x + y' has been substituted for `X' and `foo (z)'
        !          1041: for `Y'.
        !          1042: 
        !          1043: The function `foo' is used only once in the statement as it appears
        !          1044: in the program, but the expression `foo (z)' has been substituted
        !          1045: twice into the macro expansion.  As a result, `foo' might be called
        !          1046: two times when the statement is executed.  If it has side effects or
        !          1047: if it takes a long time to compute, the results might not be what you
        !          1048: intended.  We say that `min' is an "unsafe" macro.
        !          1049: 
        !          1050: Solving this problem cleanly would involve defining `min' in
        !          1051: a way that would compute the value of `foo (z)' only once.
        !          1052: Unfortunately, the C language offers no way to do this.  So the only
        !          1053: solution is to be careful when *using* the macro `min'.
        !          1054: For example, you can calculate the value of `foo (z)', save it
        !          1055: in a variable, and use that variable in `min':
        !          1056: 
        !          1057:      #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
        !          1058:      ...
        !          1059:      {
        !          1060:        int tem = foo (z);
        !          1061:        next = min (x + y, tem);
        !          1062:      }
        !          1063: 
        !          1064: (where I assume that `foo' returns type `int').
        !          1065: 
        !          1066: 
        !          1067: File: cpp  Node: Self-Reference, Prev: Side Effects, Up: Macro Pitfalls, Next: Argument Prescan
        !          1068: 
        !          1069: Self-Referential Macros
        !          1070: .......................
        !          1071: 
        !          1072: A "self-referential" macro is one whose name appears in its definition.
        !          1073: A special feature of ANSI Standard C is that the self-reference is not
        !          1074: considered a macro call.  It is passed into the preprocessor output
        !          1075: unchanged.
        !          1076: 
        !          1077: Let's consider an example:
        !          1078: 
        !          1079:      #define foo (4 + foo)
        !          1080: 
        !          1081: where `foo' is also a variable in your program.
        !          1082: 
        !          1083: Following the ordinary rules, each reference to `foo' will expand into
        !          1084: `(4 + foo)'; then this will be rescanned and will expand into `(4
        !          1085: + (4 + foo))'; and so on until it causes a fatal error (memory full) in the
        !          1086: preprocessor.
        !          1087: 
        !          1088: However, the special rule about self-reference cuts this process short
        !          1089: after one step, at `(4 + foo)'.  Therefore, this macro definition
        !          1090: has the possibly useful effect of causing the program to add 4 to
        !          1091: the value of `foo' wherever `foo' is referred to.
        !          1092: 
        !          1093: In most cases, it is a bad idea to take advantage of this feature.
        !          1094: A person reading the program who sees that `foo' is a variable will
        !          1095: not expect that it is a macro as well.  The reader will come across a
        !          1096: the identifier `foo' in the program and think its value should be
        !          1097: that of the variable `foo', whereas in fact the value is four
        !          1098: greater.
        !          1099: 
        !          1100: The special rule for self-reference applies also to "indirect"
        !          1101: self-reference.  This is the case where a macro X expands to use a
        !          1102: macro `y', and `y''s expansion refers to the macro `x'.  The
        !          1103: resulting reference to `x' comes indirectly from the expansion of
        !          1104: `x', so it is a self-reference and is not further expanded.  Thus,
        !          1105: after
        !          1106: 
        !          1107:      #define x (4 + y)
        !          1108:      #define y (2 * x)
        !          1109: 
        !          1110: `x' would expand into `(4 + (2 * x))'.  Clear?
        !          1111: 
        !          1112: But suppose `y' is used elsewhere, not from the definition of `x'.
        !          1113: Then the use of `x' in the expansion of `y' is not a self-reference
        !          1114: because `x' is not "in progress".  So it does expand.  However,
        !          1115: the expansion of `x' contains a reference to `y', and that
        !          1116: is an indirect self-reference now because `y' is "in progress".
        !          1117: The result is that `y' expands to `(2 * (4 + y))'.
        !          1118: 
        !          1119: It is not clear that this behavior would ever be useful, but it is specified
        !          1120: by the ANSI C standard, so you need to understand it.
        !          1121: 
        !          1122: 
        !          1123: File: cpp  Node: Argument Prescan, Prev: Self-Reference, Up: Macro Pitfalls, Next: Cascaded Macros
        !          1124: 
        !          1125: Separate Expansion of Macro Arguments
        !          1126: .....................................
        !          1127: 
        !          1128: We have explained that the expansion of a macro, including the substituted
        !          1129: actual arguments, is scanned over again for macro calls to be expanded.
        !          1130: 
        !          1131: What really happens is more subtle: first each actual argument text is scanned
        !          1132: separately for macro calls.  Then the results of this are substituted into
        !          1133: the macro body to produce the macro expansion, and the macro expansion
        !          1134: is scanned again for macros to expand.
        !          1135: 
        !          1136: The result is that the actual arguments are scanned *twice* to expand
        !          1137: macro calls in them.
        !          1138: 
        !          1139: Most of the time, this has no effect.  If the actual argument contained
        !          1140: any macro calls, they are expanded during the first scan.  The result
        !          1141: therefore contains no macro calls, so the second scan does not change it.
        !          1142: If the actual argument were substituted as given, with no prescan,
        !          1143: the single remaining scan would find the same macro calls and produce
        !          1144: the same results.
        !          1145: 
        !          1146: You might expect the double scan to change the results when a
        !          1147: self-referential macro is used in an actual argument of another macro
        !          1148: (*Note Self-Reference::): the self-referential macro would be expanded once
        !          1149: in the first scan, and a second time in the second scan.  But this is not
        !          1150: what happens.  The self-references that do not expand in the first scan are
        !          1151: marked so that they will not expand in the second scan either.
        !          1152: 
        !          1153: The prescan is not done when an argument is stringified or concatenated.
        !          1154: (More precisely, stringification and concatenation use the argument as
        !          1155: written, in un-prescanned form.  The same actual argument would be used in
        !          1156: prescanned form if it is substituted elsewhere without stringification or
        !          1157: concatenation.)  Thus,
        !          1158: 
        !          1159:      #define str(s) #s
        !          1160:      #define foo 4
        !          1161:      str (foo)
        !          1162: 
        !          1163: expands to `"foo"'.  Once more, prescan has been prevented from
        !          1164: having any noticeable effect.
        !          1165: 
        !          1166: You might now ask, "Why mention the prescan, if it makes no difference?
        !          1167: Why not skip it and make the preprocessor faster?"  The answer is that the
        !          1168: prescan does make a difference in two special cases:
        !          1169: 
        !          1170:    * Nested calls to a macro.
        !          1171:      
        !          1172:    * Macros that call other macros that stringify or concatenate.
        !          1173: 
        !          1174: We say that "nested" calls to a macro occur when a macro's actual
        !          1175: argument contains a call to that very macro.  For example, if `f'
        !          1176: is a macro that expects one argument, `f (f (1))' is a nested
        !          1177: pair of calls to `f'.  The desired expansion is made by
        !          1178: expanding `f (1)' and substituting that into the definition of
        !          1179: `f'.  The prescan causes the expected result to happen.
        !          1180: Without the prescan, `f (1)' itself would be substituted as
        !          1181: an actual argument, and the inner use of `f' would appear
        !          1182: during the main scan as an indirect self-reference and would not
        !          1183: be expanded.  Here, the prescan cancels an undesirable side effect
        !          1184: (in the medical, not computational, sense of the term) of the special
        !          1185: rule for self-referential macros.
        !          1186: 
        !          1187: There is also one case where prescan is useful.  It is possible
        !          1188: to use prescan to expand an argument and then stringify it---if you use
        !          1189: two levels of macros.  Let's add a new macro `xstr' to the
        !          1190: example shown above:
        !          1191: 
        !          1192:      #define xstr(s) str(s)
        !          1193:      #define str(s) #s
        !          1194:      #define foo 4
        !          1195:      xstr (foo)
        !          1196: 
        !          1197: This expands into `"4"', not `"foo"'.  The reason for the
        !          1198: difference is that the argument of `xstr' is expanded at prescan
        !          1199: (because `xstr' does not specify stringification or concatenation of
        !          1200: the argument).  The result of prescan then forms the actual argument for
        !          1201: `str'.  `str' uses its argument without prescan because it
        !          1202: performs strigification; but it cannot prevent or undo the prescanning
        !          1203: already done by `xstr'.
        !          1204: 
        !          1205: 
        !          1206: File: cpp  Node: Cascaded Macros, Prev: Argument Prescan, Up: Macro Pitfalls
        !          1207: 
        !          1208: Cascaded Use of Macros
        !          1209: ......................
        !          1210: 
        !          1211: A "cascade" of macros is when one macro's body contains a reference
        !          1212: to another macro.  This is very common practice.  For example,
        !          1213: 
        !          1214:      #define BUFSIZE 1020
        !          1215:      #define TABLESIZE BUFSIZE
        !          1216: 
        !          1217: This is not at all the same as defining `TABLESIZE' to be `1020'.
        !          1218: The `#define' for `TABLESIZE' uses exactly the body you
        !          1219: specify---in this case, `BUFSIZE'---and does not check to see whether
        !          1220: it too is the name of a macro.
        !          1221: 
        !          1222: It's only when you *use* `TABLESIZE' that the result of its expansion
        !          1223: is checked for more macro names.
        !          1224: 
        !          1225: This makes a difference if you change the definition of `BUFSIZE'
        !          1226: at some point in the source file.  `TABLESIZE', defined as shown,
        !          1227: will always expand using the definition of `BUFSIZE' that is
        !          1228: currently in effect:
        !          1229: 
        !          1230:      #define BUFSIZE 1020
        !          1231:      #define TABLESIZE BUFSIZE
        !          1232:      #undef BUFSIZE
        !          1233:      #define BUFSIZE 37
        !          1234: 
        !          1235: Now `TABLESIZE' expands (in two stages) to `37'.
        !          1236: 
        !          1237: 
        !          1238: File: cpp  Node: Conditionals, Prev: Macros, Up: Top, Next: Combining Sources
        !          1239: 
        !          1240: Conditionals
        !          1241: ============
        !          1242: 
        !          1243: In a macro processor, a "conditional" is a command that allows a part
        !          1244: of the program to be ignored during compilation, on some conditions.
        !          1245: In the C preprocessor, a conditional can test either an arithmetic expression
        !          1246: or whether a name is defined as a macro.
        !          1247: 
        !          1248: A conditional in the C preprocessor resembles in some ways an `if'
        !          1249: statement in C, but it is important to understand the difference between
        !          1250: them.  The condition in an `if' statement is tested during the execution
        !          1251: of your program.  Its purpose is to allow your program to behave differently
        !          1252: from run to run, depending on the data it is operating on.  The condition
        !          1253: in a preprocessor conditional command is tested when your program is compiled.
        !          1254: Its purpose is to allow different code to be included in the program depending
        !          1255: on the situation at the time of compilation.
        !          1256: 
        !          1257: * Menu:
        !          1258: 
        !          1259: * Uses: Conditional Uses.       What conditionals are for.
        !          1260: * Syntax: Conditional Syntax.   How conditionals are written.
        !          1261: * Deletion: Deleted Code.       Making code into a comment.
        !          1262: * Macros: Conditionals-Macros.  Why conditionals are used with macros.
        !          1263: * Errors: #error Command.       Detecting inconsistent compilation parameters.
        !          1264: 
        !          1265: 
        !          1266: File: cpp  Node: Conditional Uses, Prev: Conditionals, Up: Conditionals, Next: Conditional Syntax
        !          1267: Generally there are three kinds of reason to use a conditional.
        !          1268: 
        !          1269:    * A program may need to use different code depending on the machine or
        !          1270:      operating system it is to run on.  In some cases the code for one
        !          1271:      operating system may be erroneous on another operating system; for
        !          1272:      example, it might refer to library routines that do not exist on the
        !          1273:      other system.  When this happens, it is not enough to avoid executing
        !          1274:      the invalid code: merely having it in the program makes it impossible
        !          1275:      to link the program and run it.  With a preprocessor conditional, the
        !          1276:      offending code can be effectively excised from the program when it is
        !          1277:      not valid.
        !          1278:      
        !          1279:    * You may want to be able to compile the same source file into two
        !          1280:      different programs.  Sometimes the difference between the programs is
        !          1281:      that one makes frequent time-consuming consistency checks on its
        !          1282:      intermediate data while the other does not.
        !          1283:      
        !          1284:    * A conditional whose condition is always false is a good way to exclude
        !          1285:      code from the program but keep it as a sort of comment for future
        !          1286:      reference.
        !          1287: 
        !          1288: Most simple programs that are intended to run on only one machine will
        !          1289: not need to use preprocessor conditionals.
        !          1290: 
        !          1291: 
        !          1292: File: cpp  Node: Conditional Syntax, Prev: Conditional Uses, Up: Conditionals, Next: Conditionals-Macros
        !          1293: 
        !          1294: Syntax of Conditionals
        !          1295: ----------------------
        !          1296: 
        !          1297: A conditional in the C preprocessor begins with a "conditional
        !          1298: command": `#if', `#ifdef' or `#ifndef'.*Note Conditionals::,
        !          1299: for info on `#ifdef' and `#ifndef'; only `#if' is explained
        !          1300: here.
        !          1301: 
        !          1302: * Menu:
        !          1303: 
        !          1304: * If: #if Command.     Basic conditionals using `#if' and `#endif'.
        !          1305: * Else: #else Command. Including some text if the condition fails.
        !          1306: * Elif: #elif Command. Testing several alternative possibilities.
        !          1307: 
        !          1308: 
        !          1309: File: cpp  Node: #if Command, Prev: Conditional Syntax, Up: Conditional Syntax, Next: #else Command
        !          1310: 
        !          1311: The `#if' Command
        !          1312: .................
        !          1313: 
        !          1314: The `#if' command in its simplest form consists of
        !          1315: 
        !          1316:      #if EXPRESSION
        !          1317:      CONTROLLED TEXT
        !          1318:      #endif /* EXPRESSION */
        !          1319: 
        !          1320: The comment following the `#endif' is not required, but it is a good
        !          1321: practice because it helps people match the `#endif' to the
        !          1322: corresponding `#if'.  Such comments should always be used, except in
        !          1323: short conditionals that are not nested.  In fact, you can put anything at
        !          1324: all after the `#endif' and it will be ignored by the GNU C preprocessor,
        !          1325: but only comments are acceptable in ANSI Standard C.
        !          1326: 
        !          1327: EXPRESSION is a C expression of integer type, subject to stringent
        !          1328: restrictions.  It may contain
        !          1329: 
        !          1330:    * Integer constants, which are all regarded as `long' or
        !          1331:      `unsigned long'.
        !          1332:      
        !          1333:    * Character constants, which are interpreted according to the character
        !          1334:      set and conventions of the machine and operating system on which the
        !          1335:      preprocessor is running.  The GNU C preprocessor uses the C data type
        !          1336:      `char' for these character constants; therefore, whether some
        !          1337:      character codes are negative is determined by the C compiler used to
        !          1338:      compile the preprocessor.  If it treats `char' as signed, then
        !          1339:      character codes large enough to set the sign bit will be considered
        !          1340:      negative; otherwise, no character code is considered negative.
        !          1341:      
        !          1342:    * Arithmetic operators for addition, subtraction, multiplication,
        !          1343:      division, bitwise operations, shifts, comparisons, and `&&' and
        !          1344:      `||'.
        !          1345:      
        !          1346:    * Identifiers that are not macros, which are all treated as zero(!).
        !          1347:      
        !          1348:    * Macro calls.  All macro calls in the expression are expanded before
        !          1349:      actual computation of the expression's value begins.
        !          1350: 
        !          1351: Note that `sizeof' operators and `enum'-type values are not allowed.
        !          1352: `enum'-type values, like all other identifiers that are not taken
        !          1353: as macro calls and expanded, are treated as zero.
        !          1354: 
        !          1355: The text inside of a conditional can include preprocessor commands.  Then
        !          1356: the commands inside the conditional are obeyed only if that branch of the
        !          1357: conditional succeeds.  The text can also contain other conditional groups.
        !          1358: However, the `#if''s and `#endif''s must balance.
        !          1359: 
        !          1360: 
        !          1361: File: cpp  Node: #else Command, Prev: #if Command, Up: Conditional Syntax, Next: #elif Command
        !          1362: 
        !          1363: The `#else' Command
        !          1364: ...................
        !          1365: 
        !          1366: The `#else' command can be added a conditional to provide alternative
        !          1367: text to be used if the condition is false.  This looks like
        !          1368: 
        !          1369:      #if EXPRESSION
        !          1370:      TEXT-IF-TRUE
        !          1371:      #else /* Not EXPRESSION */
        !          1372:      TEXT-IF-FALSE
        !          1373:      #endif /* Not EXPRESSION */
        !          1374: 
        !          1375: If EXPRESSION is nonzero, and the TEXT-IF-TRUE is considered
        !          1376: included, then `#else' acts like a failing conditional and the
        !          1377: TEXT-IF-FALSE is ignored.  Contrariwise, if the `#if'
        !          1378: conditional fails, the TEXT-IF-FALSE is considered included.
        !          1379: 
        !          1380: 
        !          1381: File: cpp  Node: #elif Command, Prev: #else Command, Up: Conditional Syntax
        !          1382: 
        !          1383: The `#elif' Command
        !          1384: ...................
        !          1385: 
        !          1386: One common case of nested conditionals is used to check for more than two
        !          1387: possible alternatives.  For example, you might have
        !          1388: 
        !          1389:      #if X == 1
        !          1390:      ...
        !          1391:      #else /* X != 1 */
        !          1392:      #if X == 2
        !          1393:      ...
        !          1394:      #else /* X != 2 */
        !          1395:      ...
        !          1396:      #endif /* X != 2 */
        !          1397:      #endif /* X != 1 */
        !          1398: 
        !          1399: Another conditional command, `#elif', allows this to be abbreviated
        !          1400: as follows:
        !          1401: 
        !          1402:      #if X == 1
        !          1403:      ...
        !          1404:      #elif X == 2
        !          1405:      ...
        !          1406:      #else /* X != 2 and X != 1*/
        !          1407:      ...
        !          1408:      #endif /* X != 2 and X != 1*/
        !          1409: 
        !          1410: `#elif' stands for "else if".  Like `#else', it goes in the
        !          1411: middle of a `#if'-`#endif' pair and subdivides it; it does not
        !          1412: require a matching `#endif' of its own.  Like `#if', the
        !          1413: `#elif' command includes an expression to be tested.
        !          1414: 
        !          1415: The text following the `#elif' is processed only if the original
        !          1416: `#if'-condition failed and the `#elif' condition succeeeds.  More
        !          1417: than one `#elif' can go in the same `#if'-`#endif' group.
        !          1418: Then the text after each `#elif' is processed only if the `#elif'
        !          1419: condition succeeds after the original `#if' and any previous
        !          1420: `#elif''s within it have failed.  `#else' is equivalent to
        !          1421: `#elif 1', and `#else' is allowed after any number of
        !          1422: `#elif''s, but `#elif' may not follow a `#else'.
        !          1423: 
        !          1424: 
        !          1425: File: cpp  Node: Deleted Code, Prev: Conditional Syntax, Up: Conditionals, Next: Conditionals-Macros
        !          1426: 
        !          1427: Keeping Deleted Code for Future Reference
        !          1428: -----------------------------------------
        !          1429: 
        !          1430: If you replace or delete a part of the program but want to keep the old
        !          1431: code around as a comment for future reference, the easy way to do this is
        !          1432: to put `#if 0' before it and `#endif' after it.
        !          1433: 
        !          1434: This works even if the code being turned off contains conditionals, but
        !          1435: they must be entire conditionals (balanced `#if' and `#endif').
        !          1436: 
        !          1437: 
        !          1438: File: cpp  Node: Conditionals-Macros, Prev: Deleted Code, Up: Conditionals, Next: #error Command
        !          1439: 
        !          1440: Conditionals and Macros
        !          1441: -----------------------
        !          1442: 
        !          1443: Conditionals are rarely useful except in connection with macros.  A
        !          1444: `#if' command whose expression uses no macros is equivalent to
        !          1445: `#if 1' or `#if 0'; you might as well determine which one, by
        !          1446: computing the value of the expression yourself, and then simplify the
        !          1447: program.  But when the expression uses macros, its value can vary from
        !          1448: compilation to compilation.
        !          1449: 
        !          1450: For example, here is a conditional that tests the expression
        !          1451: `BUFSIZE == 1020', where `BUFSIZE' must be a macro.
        !          1452: 
        !          1453:      #if BUFSIZE == 1020
        !          1454:        printf ("Large buffers!\n");
        !          1455:      #endif /* BUFSIZE is large */
        !          1456: 
        !          1457: The special operator `defined' may be used in `#if' expressions
        !          1458: to test whether a certain name is defined as a macro.  Either
        !          1459: `defined NAME' or `defined (NAME)'.
        !          1460: 
        !          1461: is an expression whose value is 1 if NAME is defined as macro at
        !          1462: the current point in the program, and 0 otherwise.  For the
        !          1463: `defined' operator it makes no difference what the definition of
        !          1464: the macro is; all that matters is whether there is a definition.  Thus,
        !          1465: for example,
        !          1466: 
        !          1467:      #if defined (vax) || defined (ns16000)
        !          1468: 
        !          1469: would include the following code if either of the names `vax' and
        !          1470: `ns16000' is defined as a macro.
        !          1471: 
        !          1472: If a macro is defined and later undefined with `#undef',
        !          1473: subsequent use of the `defined' operator will return 0, because
        !          1474: the name is no longer defined.  If the macro is defined again with
        !          1475: another `#define', `defined' will recommence returning 1.
        !          1476: 
        !          1477: Conditionals that test just the definedness of one name are very common, so
        !          1478: there are two special short conditional commands for this case.  They are
        !          1479: 
        !          1480: `#ifdef NAME'     
        !          1481:      is equivalent to `#if defined (NAME)'.
        !          1482:      
        !          1483: `#ifndef NAME'     
        !          1484:      is equivalent to `#if ! defined (NAME)'.
        !          1485: 
        !          1486: Macro definitions can vary between compilations for several reasons.
        !          1487: 
        !          1488:    * Some macros are predefined on each kind of machine.  For example, on a
        !          1489:      Vax, the name `vax' is a predefined macro.  On other machines, it
        !          1490:      would not be defined.
        !          1491:      
        !          1492:    * Many more macros are defined by system header files.  Different
        !          1493:      systems and machines define different macros, or give them different
        !          1494:      values.  It is useful to test these macros with conditionals to avoid
        !          1495:      using a system feature on a machine where it is not implemented.
        !          1496:      
        !          1497:    * Macros are a common way of allowing users to customize a program for
        !          1498:      different machines or applications.  For example, the macro
        !          1499:      `BUFSIZE' might be defined in a configuration file for your
        !          1500:      program that is included as a header file in each source file.  You
        !          1501:      would use `BUFSIZE' in a preprocessor conditional in order to
        !          1502:      generate different code depending on the chosen configuration.
        !          1503:      
        !          1504:    * Macros can be defined or undefined with `-D' and `-U'
        !          1505:      command switches when you compile the program.  You can arrange to
        !          1506:      compile the same source file into two different programs by choosing
        !          1507:      a macro name to specify which program you want, writing conditionals
        !          1508:      to test whether or how this macro is defined, and then controlling
        !          1509:      the state of the macro with compiler command switches.
        !          1510:      *Note Invocation::.
        !          1511: 
        !          1512: 
        !          1513: File: cpp  Node: #error Command, Prev: Conditionals-Macros, Up: Conditionals
        !          1514: 
        !          1515: The `#error' Command
        !          1516: --------------------
        !          1517: 
        !          1518: The command `#error' causes the preprocessor to report a fatal
        !          1519: error.  The rest of the line that follows `#error' is used as the
        !          1520: error message.
        !          1521: 
        !          1522: You would use `#error' inside of a conditional that detects a
        !          1523: combination of parameters which you know the program does not properly
        !          1524: support.  For example, if you know that the program will not run
        !          1525: properly on a Vax, you might write
        !          1526: 
        !          1527:      #ifdef vax
        !          1528:      #error Won't work on Vaxen.  See comments at get_last_object.
        !          1529:      #endif
        !          1530: 
        !          1531: *Note Nonstandard Predefined::, for why this works.
        !          1532: 
        !          1533: If you have several configuration parameters that must be set up by
        !          1534: the installation in a consistent way, you can use conditionals to detect
        !          1535: an inconsistency and report it with `#error'.  For example,
        !          1536: 
        !          1537:      #if HASH_TABLE_SIZE % 2 == 0 || HASH_TABLE_SIZE % 3 == 0 \
        !          1538:          || HASH_TABLE_SIZE % 5 == 0
        !          1539:      #error HASH_TABLE_SIZE should not be divisible by a small prime
        !          1540:      #endif
        !          1541: 
        !          1542: 
        !          1543: File: cpp  Node: Combining Sources, Prev: Conditionals, Up: Top, Next: Other Commands
        !          1544: 
        !          1545: Combining Source Files
        !          1546: ======================
        !          1547: 
        !          1548: One of the jobs of the C preprocessor is to inform the C compiler of where
        !          1549: each line of C code came from: which source file and which line number.
        !          1550: 
        !          1551: C code can come from multiple source files if you use `#include';
        !          1552: both `#include' and the use of conditionals and macros can cause
        !          1553: the line number of a line in the preprocessor output to be different
        !          1554: from the line's number in the original source file.  You will appreciate
        !          1555: the value of making both the C compiler (in error messages) and symbolic
        !          1556: debuggers such as GDB use the line numbers in your source file.
        !          1557: 
        !          1558: The C preprocessor builds on this feature by offering a command by which
        !          1559: you can control the feature explicitly.  This is useful when a file for
        !          1560: input to the C preprocessor is the output from another program such as the
        !          1561: `bison' parser generator, which operates on another file that is the
        !          1562: true source file.  Parts of the output from `bison' are generated from
        !          1563: scratch, other parts come from a standard parser file.  The rest are copied
        !          1564: nearly verbatim from the source file, but their line numbers in the
        !          1565: `bison' output are not the same as their original line numbers.
        !          1566: Naturally you would like compiler error messages and symbolic debuggers to
        !          1567: know the original source file and line number of each line in the
        !          1568: `bison' output.
        !          1569: 
        !          1570: `bison' arranges this by writing `#line' commands into the output
        !          1571: file.  `#line' is a command that specifies the original line number
        !          1572: and source file name for subsequent input in the current preprocessor input
        !          1573: file.  `#line' has three variants:
        !          1574: 
        !          1575: `#line LINENUM'     
        !          1576:      Here LINENUM is a decimal integer constant.  This specifies that
        !          1577:      the line number of the following line of input, in its original source file,
        !          1578:      was LINENUM.
        !          1579:      
        !          1580: `#line LINENUM FILENAME'     
        !          1581:      Here LINENUM is a decimal integer constant and FILENAME
        !          1582:      is a string constant.  This specifies that the following line of input
        !          1583:      came originally from source file FILENAME and its line number there
        !          1584:      was LINENUM.  Keep in mind that FILENAME is not just a
        !          1585:      file name; it is surrounded by Doublequotes.
        !          1586:      
        !          1587: `#line ANYTHING ELSE'     
        !          1588:      ANYTHING ELSE is checked for macro calls, which are expanded.
        !          1589:      The result should be a decimal integer constant followed optionally
        !          1590:      by a string constant, as described above.
        !          1591: 
        !          1592: `#line' commands alter the results of the `__FILE__' and
        !          1593: `__LINE__' predefined macros from that point on.  *Note Standard Predefined::.
        !          1594: 
        !          1595: 
        !          1596: File: cpp  Node: Other Commands, Prev: Combining Sources, Up: Top, Next: Output
        !          1597: 
        !          1598: Miscellaneous Preprocessor Commands
        !          1599: ===================================
        !          1600: 
        !          1601: This section describes two additional preprocesor commands.  They are
        !          1602: not very useful, but are mentioned for completeness.
        !          1603: 
        !          1604: The "null command" consists of a `#' followed by a Newline, with
        !          1605: only whitespace (including comments) in between.  A null command is
        !          1606: understood as a preprocessor command but has no effect on the preprocessor
        !          1607: output.  The primary significance of the existence of the null command is
        !          1608: that an input line consisting of just a `#' will produce no output,
        !          1609: rather than a line of output containing just a `#'.  Supposedly
        !          1610: some old C programs contain such lines.
        !          1611: 
        !          1612: The `#pragma' command is specified in the ANSI standard to have an
        !          1613: arbitrary implementation-defined effect.  In the GNU C preprocessor,
        !          1614: `#pragma' first attempts to run the game `rogue'; if that fails,
        !          1615: it tries to run the game `hack'; if that fails, it tries to run
        !          1616: GNU Emacs displaying the Tower of Hanoi; if that fails, it reports a
        !          1617: fatal error.  In any case, preprocessing does not continue.
        !          1618: 
        !          1619: 
        !          1620: File: cpp  Node: Output, Prev: Other Commands, Up: Top, Next: Invocation
        !          1621: 
        !          1622: C Preprocessor Output
        !          1623: =====================
        !          1624: 
        !          1625: The output from the C preprocessor looks much like the input, except
        !          1626: that all preprocessor command lines have been replaced with blank lines
        !          1627: and all comments with spaces.  Whitespace within a line is not altered;
        !          1628: however, a space is inserted after the expansions of most macro calls.
        !          1629: 
        !          1630: Source file name and line number information is conveyed by lines of
        !          1631: the form
        !          1632: 
        !          1633:      # LINENUM FILENAME
        !          1634: 
        !          1635: which are inserted as needed into the middle of the input (but never within
        !          1636: a string or character constant).  Such a line means that the following line
        !          1637: originated in file FILENAME at line LINENUM.
        !          1638: 
        !          1639: 
        !          1640: File: cpp  Node: Invocation, Prev: Output, Up: Top
        !          1641: 
        !          1642: Invoking the C Preprocessor
        !          1643: ===========================
        !          1644: 
        !          1645: Most often when you use the C preprocessor you will not have to invoke it
        !          1646: explicitly: the C compiler will do so automatically.  However, the
        !          1647: preprocessor is sometimes useful individually.
        !          1648: 
        !          1649: The C preprocessor expects two file names as arguments, INFILE and
        !          1650: OUTFILE.  The preprocessor reads INFILE together with any other
        !          1651: files it specifies with `#include'.  All the output generated by the
        !          1652: combined input files is written in OUTFILE.
        !          1653: 
        !          1654: Either INFILE or OUTFILE may be `-', which as INFILE
        !          1655: means to read from standard input and as OUTFILE means to write to
        !          1656: standard output.  Also, if OUTFILE or both file names are omitted,
        !          1657: the standard output and standard input are used for the omitted file names.
        !          1658: 
        !          1659: Here is a table of command switches accepted by the C preprocessor.  Most
        !          1660: of them can also be given when compiling a C program; they are passed along
        !          1661: automatically to the preprocessor when it is invoked by the compiler.
        !          1662: 
        !          1663: `-P'     
        !          1664:      Inhibit generation of `#'-lines with line-number information in
        !          1665:      the output from the preprocessor (*Note Output::).  This might be
        !          1666:      useful when running the preprocessor on something that is not C code
        !          1667:      and will be sent to a program which might be confused by the
        !          1668:      `#'-lines
        !          1669:      
        !          1670: `-C'     
        !          1671:      Do not discard comments: pass them through to the output file.
        !          1672:      Comments appearing in arguments of a macro call will be copied to the
        !          1673:      output before the expansion of the macro call.
        !          1674:      
        !          1675: `-T'     
        !          1676:      Process ANSI standard trigraph sequences.  These are three-character
        !          1677:      sequences, all starting with `??', that are defined by ANSI C to
        !          1678:      stand for single characters.  For example, `??/' stands for
        !          1679:      `\', so `'??/n'' is a character constant for Newline.
        !          1680:      Strictly speaking, the GNU C preprocessor does not support all
        !          1681:      programs in ANSI Standard C unless `-T' is used, but you if you
        !          1682:      ever notice the difference it will be with relief.
        !          1683:      
        !          1684:      You don't want to know any more about trigraphs.
        !          1685:      
        !          1686: `-pedantic'     
        !          1687:      Issue warnings required by the ANSI C standard in certain cases such
        !          1688:      as when text other than a comment follows `#else' or `#endif'.
        !          1689:      
        !          1690: `-I DIRECTORY'     
        !          1691:      Add the directory DIRECTORY to the end of the list of
        !          1692:      directories to be searched for user header files (*Note Include Syntax::).
        !          1693:      
        !          1694: `-D NAME'     
        !          1695:      Predefine NAME as a macro, with definition `1'.
        !          1696:      
        !          1697: `-D NAME=DEFINITION'     
        !          1698:      Predefine NAME as a macro, with definition DEFINITION.
        !          1699:      There are no restrictions on the contents of DEFINITION, but if
        !          1700:      you are invoking the preprocessor from a shell or shell-like program
        !          1701:      you may need to use the shell's quoting syntax to protect characters
        !          1702:      such as spaces that have a meaning in the shell syntax.
        !          1703:      
        !          1704: `-U NAME'     
        !          1705:      Do not predefine NAME.  If both `-U' and `-D' are
        !          1706:      specified for one name, the `-U' beats the `-D' and the name
        !          1707:      is not predefined.
        !          1708:      
        !          1709: `-undef'     
        !          1710:      Do not predefine any nonstandard macros.
        !          1711:      
        !          1712: `-d'     
        !          1713:      Instead of outputting the result of preprocessing, output a list of
        !          1714:      `#define' commands for all the macros defined during the
        !          1715:      execution of the preprocessor.
        !          1716:      
        !          1717: `-i FILE'     
        !          1718:      Process FILE as input, discarding the resulting output, before
        !          1719:      processing the regular input file.  Because the output generated from
        !          1720:      FILE is discarded, the only effect of `-i FILE' is to
        !          1721:      make the macros defined in FILE available for use in the main
        !          1722:      input.
        !          1723: 
        !          1724: 
        !          1725: File: cpp  Node: Concept Index, Prev: Invocation, Up: Top, Next: Index
        !          1726: 
        !          1727: Concept Index
        !          1728: *************
        !          1729: 
        !          1730: * Menu:
        !          1731: 
        !          1732: * cascaded macros: Cascaded Macros.
        !          1733: * commands: Commands.
        !          1734: * concatenation: Concatenation.
        !          1735: * conditionals: Conditionals.
        !          1736: * header file: Header Files.
        !          1737: * line control: Combining Sources.
        !          1738: * macro body uses macro: Cascaded Macros.
        !          1739: * null command: Other Commands.
        !          1740: * output format: Output.
        !          1741: * predefined macros: Predefined.
        !          1742: * preprocessor commands: Commands.
        !          1743: * redefining macros: Redefining.
        !          1744: * self-reference: Self-Reference.
        !          1745: * semicolons (after macro calls): Swallow Semicolon.
        !          1746: * side effects (in macro arguments): Side Effects.
        !          1747: * stringification: Stringification.
        !          1748: * switches: Invocation.
        !          1749: * undefining macros: Undefining.
        !          1750: * unsafe macros: Side Effects.
        !          1751: 
        !          1752: 
        !          1753: File: cpp  Node: Index, Prev: Concept Index, Up: Top
        !          1754: 
        !          1755: Index of Commands, Macros and Switches
        !          1756: **************************************
        !          1757: 
        !          1758: * Menu:
        !          1759: 
        !          1760: * #elif: #elif Command.
        !          1761: * #else: #else Command.
        !          1762: * #error: #error Command.
        !          1763: * #if: Conditional Syntax.
        !          1764: * #ifdef: Conditionals-Macros.
        !          1765: * #ifndef: Conditionals-Macros.
        !          1766: * #include: Include Syntax.
        !          1767: * #line: Combining Sources.
        !          1768: * #pragma: Other Commands.
        !          1769: * -C: Invocation.
        !          1770: * -D: Invocation.
        !          1771: * -d: Invocation.
        !          1772: * -I: Invocation.
        !          1773: * -i: Invocation.
        !          1774: * -P: Invocation.
        !          1775: * -pedantic: Invocation.
        !          1776: * -T: Invocation.
        !          1777: * -U: Invocation.
        !          1778: * -undef: Invocation.
        !          1779: * BSD: Nonstandard Predefined.
        !          1780: * defined: Conditionals-Macros.
        !          1781: * M68020: Nonstandard Predefined.
        !          1782: * m68k: Nonstandard Predefined.
        !          1783: * mc68000: Nonstandard Predefined.
        !          1784: * pyr: Nonstandard Predefined.
        !          1785: * sun: Nonstandard Predefined.
        !          1786: * system header files: Header Uses.
        !          1787: * unix: Nonstandard Predefined.
        !          1788: * vax: Nonstandard Predefined.
        !          1789: * __DATE__: Standard Predefined.
        !          1790: * __FILE__: Standard Predefined.
        !          1791: * __LINE__: Standard Predefined.
        !          1792: * __STDC__: Standard Predefined.
        !          1793: * __TIME__: Standard Predefined.
        !          1794: 
        !          1795: 
        !          1796: Tag table:
        !          1797: Node: Top737
        !          1798: Node: Global Actions3284
        !          1799: Node: Commands5126
        !          1800: Node: Header Files6717
        !          1801: Node: Header Uses7047
        !          1802: Node: Include Syntax8428
        !          1803: Node: Include Operation11291
        !          1804: Node: Macros12930
        !          1805: Node: Simple Macros13832
        !          1806: Node: Argument Macros16865
        !          1807: Node: Predefined21575
        !          1808: Node: Standard Predefined21993
        !          1809: Node: Nonstandard Predefined24421
        !          1810: Node: Stringification26910
        !          1811: Node: Concatenation29738
        !          1812: Node: Undefining32985
        !          1813: Node: Redefining33997
        !          1814: Node: Macro Pitfalls35276
        !          1815: Node: Misnesting36311
        !          1816: Node: Macro Parentheses37307
        !          1817: Node: Swallow Semicolon39133
        !          1818: Node: Side Effects41014
        !          1819: Node: Self-Reference42373
        !          1820: Node: Argument Prescan44606
        !          1821: Node: Cascaded Macros48306
        !          1822: Node: Conditionals49318
        !          1823: Node: Conditional Uses50594
        !          1824: Node: Conditional Syntax51921
        !          1825: Node: #if Command52478
        !          1826: Node: #else Command54730
        !          1827: Node: #elif Command55363
        !          1828: Node: Deleted Code56693
        !          1829: Node: Conditionals-Macros57214
        !          1830: Node: #error Command60454
        !          1831: Node: Combining Sources61490
        !          1832: Node: Other Commands64062
        !          1833: Node: Output65192
        !          1834: Node: Invocation65900
        !          1835: Node: Concept Index69479
        !          1836: Node: Index70238
        !          1837: 
        !          1838: End tag table

unix.superglobalmegacorp.com

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