Annotation of gcc/cpp-2, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: File: cpp,  Node: Argument Prescan,  Next: Cascaded Macros,  Prev: Self-Reference,  Up: Macro Pitfalls
                      4: 
                      5: Separate Expansion of Macro Arguments
                      6: .....................................
                      7: 
                      8:  We have explained that the expansion of a macro, including the substituted
                      9: actual arguments, is scanned over again for macro calls to be expanded.
                     10: 
                     11: What really happens is more subtle: first each actual argument text is
                     12: scanned separately for macro calls.  Then the results of this are
                     13: substituted into the macro body to produce the macro expansion, and the
                     14: macro expansion is scanned again for macros to expand.
                     15: 
                     16: The result is that the actual arguments are scanned *twice* to expand macro
                     17: calls in them.
                     18: 
                     19: Most of the time, this has no effect.  If the actual argument contained any
                     20: macro calls, they are expanded during the first scan.  The result therefore
                     21: contains no macro calls, so the second scan does not change it.  If the
                     22: actual argument were substituted as given, with no prescan, the single
                     23: remaining scan would find the same macro calls and produce the same results.
                     24: 
                     25: You might expect the double scan to change the results when a
                     26: self-referential macro is used in an actual argument of another macro
                     27: (*Note Self-Reference::.): the self-referential macro would be expanded
                     28: once in the first scan, and a second time in the second scan.  But this is
                     29: not what happens.  The self-references that do not expand in the first scan
                     30: are marked so that they will not expand in the second scan either.
                     31: 
                     32: The prescan is not done when an argument is stringified or concatenated. 
                     33: (More precisely, stringification and concatenation use the argument as
                     34: written, in un-prescanned form.  The same actual argument would be used in
                     35: prescanned form if it is substituted elsewhere without stringification or
                     36: concatenation.)  Thus,
                     37: 
                     38:      #define str(s) #s
                     39:      #define foo 4
                     40:      str (foo)
                     41: 
                     42: expands to `"foo"'.  Once more, prescan has been prevented from having any
                     43: noticeable effect.
                     44: 
                     45: You might now ask, ``Why mention the prescan, if it makes no difference? 
                     46: Why not skip it and make the preprocessor faster?''  The answer is that the
                     47: prescan does make a difference in two special cases:
                     48: 
                     49:    * Nested calls to a macro.
                     50: 
                     51:    * Macros that call other macros that stringify or concatenate.
                     52: 
                     53: We say that "nested" calls to a macro occur when a macro's actual argument
                     54: contains a call to that very macro.  For example, if `f' is a macro that
                     55: expects one argument, `f (f (1))' is a nested pair of calls to `f'.  The
                     56: desired expansion is made by expanding `f (1)' and substituting that into
                     57: the definition of `f'.  The prescan causes the expected result to happen. 
                     58: Without the prescan, `f (1)' itself would be substituted as an actual
                     59: argument, and the inner use of `f' would appear during the main scan as an
                     60: indirect self-reference and would not be expanded.  Here, the prescan
                     61: cancels an undesirable side effect (in the medical, not computational,
                     62: sense of the term) of the special rule for self-referential macros.
                     63: 
                     64: There is also one case where prescan is useful.  It is possible to use
                     65: prescan to expand an argument and then stringify it---if you use two levels
                     66: of macros.  Let's add a new macro `xstr' to the example shown above:
                     67: 
                     68:      #define xstr(s) str(s)
                     69:      #define str(s) #s
                     70:      #define foo 4
                     71:      xstr (foo)
                     72: 
                     73: This expands into `"4"', not `"foo"'.  The reason for the difference is
                     74: that the argument of `xstr' is expanded at prescan (because `xstr' does not
                     75: specify stringification or concatenation of the argument).  The result of
                     76: prescan then forms the actual argument for `str'.  `str' uses its argument
                     77: without prescan because it performs strigification; but it cannot prevent
                     78: or undo the prescanning already done by `xstr'.
                     79: 
                     80: 
                     81: File: cpp,  Node: Cascaded Macros,  Prev: Argument Prescan,  Up: Macro Pitfalls
                     82: 
                     83: Cascaded Use of Macros
                     84: ......................
                     85: 
                     86:  A "cascade" of macros is when one macro's body contains a reference to
                     87: another macro.  This is very common practice.  For example,
                     88: 
                     89:      #define BUFSIZE 1020
                     90:      #define TABLESIZE BUFSIZE
                     91: 
                     92: This is not at all the same as defining `TABLESIZE' to be `1020'.  The
                     93: `#define' for `TABLESIZE' uses exactly the body you specify---in this case,
                     94: `BUFSIZE'---and does not check to see whether it too is the name of a macro.
                     95: 
                     96: It's only when you *use* `TABLESIZE' that the result of its expansion is
                     97: checked for more macro names.
                     98: 
                     99: This makes a difference if you change the definition of `BUFSIZE' at some
                    100: point in the source file.  `TABLESIZE', defined as shown, will always
                    101: expand using the definition of `BUFSIZE' that is currently in effect:
                    102: 
                    103:      #define BUFSIZE 1020
                    104:      #define TABLESIZE BUFSIZE
                    105:      #undef BUFSIZE
                    106:      #define BUFSIZE 37
                    107: 
                    108: Now `TABLESIZE' expands (in two stages) to `37'.
                    109: 
                    110: 
                    111: File: cpp,  Node: Conditionals,  Next: Combining Sources,  Prev: Macros,  Up: Top
                    112: 
                    113: Conditionals
                    114: ============
                    115: 
                    116: In a macro processor, a "conditional" is a command that allows a part of
                    117: the program to be ignored during compilation, on some conditions.  In the C
                    118: preprocessor, a conditional can test either an arithmetic expression or
                    119: whether a name is defined as a macro.
                    120: 
                    121: A conditional in the C preprocessor resembles in some ways an `if'
                    122: statement in C, but it is important to understand the difference between
                    123: them.  The condition in an `if' statement is tested during the execution of
                    124: your program.  Its purpose is to allow your program to behave differently
                    125: from run to run, depending on the data it is operating on.  The condition
                    126: in a preprocessor conditional command is tested when your program is
                    127: compiled.  Its purpose is to allow different code to be included in the
                    128: program depending on the situation at the time of compilation.
                    129: 
                    130: * Menu:
                    131: 
                    132: * Uses: Conditional Uses.       What conditionals are for.
                    133: * Syntax: Conditional Syntax.   How conditionals are written.
                    134: * Deletion: Deleted Code.       Making code into a comment.
                    135: * Macros: Conditionals-Macros.  Why conditionals are used with macros.
                    136: * Errors: #error Command.       Detecting inconsistent compilation parameters.
                    137: 
                    138: 
                    139: 
                    140: File: cpp,  Node: Conditional Uses,  Next: Conditional Syntax,  Prev: Conditionals,  Up: Conditionals
                    141: 
                    142: Generally there are three kinds of reason to use a conditional.
                    143: 
                    144:    * A program may need to use different code depending on the machine or
                    145:      operating system it is to run on.  In some cases the code for one
                    146:      operating system may be erroneous on another operating system; for
                    147:      example, it might refer to library routines that do not exist on the
                    148:      other system.  When this happens, it is not enough to avoid executing
                    149:      the invalid code: merely having it in the program makes it impossible
                    150:      to link the program and run it.  With a preprocessor conditional, the
                    151:      offending code can be effectively excised from the program when it is
                    152:      not valid.
                    153: 
                    154:    * You may want to be able to compile the same source file into two
                    155:      different programs.  Sometimes the difference between the programs is
                    156:      that one makes frequent time-consuming consistency checks on its
                    157:      intermediate data while the other does not.
                    158: 
                    159:    * A conditional whose condition is always false is a good way to exclude
                    160:      code from the program but keep it as a sort of comment for future
                    161:      reference.
                    162: 
                    163: Most simple programs that are intended to run on only one machine will not
                    164: need to use preprocessor conditionals.
                    165: 
                    166: 
                    167: File: cpp,  Node: Conditional Syntax,  Next: Conditionals-Macros,  Prev: Conditional Uses,  Up: Conditionals
                    168: 
                    169: Syntax of Conditionals
                    170: ----------------------
                    171: 
                    172: A conditional in the C preprocessor begins with a "conditional command":
                    173: `#if', `#ifdef' or `#ifndef'.*note Conditionals::, for info on `#ifdef' and
                    174: `#ifndef'; only `#if' is explained here.
                    175: 
                    176: * Menu:
                    177: 
                    178: * If: #if Command.     Basic conditionals using `#if' and `#endif'.
                    179: * Else: #else Command. Including some text if the condition fails.
                    180: * Elif: #elif Command. Testing several alternative possibilities.
                    181: 
                    182: 
                    183: 
                    184: File: cpp,  Node: #if Command,  Next: #else Command,  Prev: Conditional Syntax,  Up: Conditional Syntax
                    185: 
                    186: The `#if' Command
                    187: .................
                    188: 
                    189:  The `#if' command in its simplest form consists of
                    190: 
                    191:      #if EXPRESSION
                    192:      CONTROLLED TEXT
                    193:      #endif /* EXPRESSION */
                    194: 
                    195: The comment following the `#endif' is not required, but it is a good
                    196: practice because it helps people match the `#endif' to the corresponding
                    197: `#if'.  Such comments should always be used, except in short conditionals
                    198: that are not nested.  In fact, you can put anything at all after the
                    199: `#endif' and it will be ignored by the GNU C preprocessor, but only
                    200: comments are acceptable in ANSI Standard C.
                    201: 
                    202: EXPRESSION is a C expression of integer type, subject to stringent
                    203: restrictions.  It may contain
                    204: 
                    205:    * Integer constants, which are all regarded as `long' or `unsigned long'.
                    206: 
                    207:    * Character constants, which are interpreted according to the character
                    208:      set and conventions of the machine and operating system on which the
                    209:      preprocessor is running.  The GNU C preprocessor uses the C data type
                    210:      `char' for these character constants; therefore, whether some
                    211:      character codes are negative is determined by the C compiler used to
                    212:      compile the preprocessor.  If it treats `char' as signed, then
                    213:      character codes large enough to set the sign bit will be considered
                    214:      negative; otherwise, no character code is considered negative.
                    215: 
                    216:    * Arithmetic operators for addition, subtraction, multiplication,
                    217:      division, bitwise operations, shifts, comparisons, and `&&' and `||'.
                    218: 
                    219:    * Identifiers that are not macros, which are all treated as zero(!).
                    220: 
                    221:    * Macro calls.  All macro calls in the expression are expanded before
                    222:      actual computation of the expression's value begins.
                    223: 
                    224: Note that `sizeof' operators and `enum'-type values are not allowed. 
                    225: `enum'-type values, like all other identifiers that are not taken as macro
                    226: calls and expanded, are treated as zero.
                    227: 
                    228: The text inside of a conditional can include preprocessor commands.  Then
                    229: the commands inside the conditional are obeyed only if that branch of the
                    230: conditional succeeds.  The text can also contain other conditional groups. 
                    231: However, the `#if''s and `#endif''s must balance.
                    232: 
                    233: 
                    234: File: cpp,  Node: #else Command,  Next: #elif Command,  Prev: #if Command,  Up: Conditional Syntax
                    235: 
                    236: The `#else' Command
                    237: ...................
                    238: 
                    239:  The `#else' command can be added a conditional to provide alternative text
                    240: to be used if the condition is false.  This looks like
                    241: 
                    242:      #if EXPRESSION
                    243:      TEXT-IF-TRUE
                    244:      #else /* Not EXPRESSION */
                    245:      TEXT-IF-FALSE
                    246:      #endif /* Not EXPRESSION */
                    247: 
                    248: If EXPRESSION is nonzero, and the TEXT-IF-TRUE is considered included, then
                    249: `#else' acts like a failing conditional and the TEXT-IF-FALSE is ignored. 
                    250: Contrariwise, if the `#if' conditional fails, the TEXT-IF-FALSE is
                    251: considered included.
                    252: 
                    253: 
                    254: File: cpp,  Node: #elif Command,  Prev: #else Command,  Up: Conditional Syntax
                    255: 
                    256: The `#elif' Command
                    257: ...................
                    258: 
                    259:  One common case of nested conditionals is used to check for more than two
                    260: possible alternatives.  For example, you might have
                    261: 
                    262:      #if X == 1
                    263:      ...
                    264:      #else /* X != 1 */
                    265:      #if X == 2
                    266:      ...
                    267:      #else /* X != 2 */
                    268:      ...
                    269:      #endif /* X != 2 */
                    270:      #endif /* X != 1 */
                    271: 
                    272: Another conditional command, `#elif', allows this to be abbreviated as
                    273: follows:
                    274: 
                    275:      #if X == 1
                    276:      ...
                    277:      #elif X == 2
                    278:      ...
                    279:      #else /* X != 2 and X != 1*/
                    280:      ...
                    281:      #endif /* X != 2 and X != 1*/
                    282: 
                    283: `#elif' stands for ``else if''.  Like `#else', it goes in the middle of a
                    284: `#if'-`#endif' pair and subdivides it; it does not require a matching
                    285: `#endif' of its own.  Like `#if', the `#elif' command includes an
                    286: expression to be tested.
                    287: 
                    288: The text following the `#elif' is processed only if the original
                    289: `#if'-condition failed and the `#elif' condition succeeeds.  More than one
                    290: `#elif' can go in the same `#if'-`#endif' group.  Then the text after each
                    291: `#elif' is processed only if the `#elif' condition succeeds after the
                    292: original `#if' and any previous `#elif''s within it have failed.  `#else'
                    293: is equivalent to `#elif 1', and `#else' is allowed after any number of
                    294: `#elif''s, but `#elif' may not follow a `#else'.
                    295: 
                    296: 
                    297: File: cpp,  Node: Deleted Code,  Next: Conditionals-Macros,  Prev: Conditional Syntax,  Up: Conditionals
                    298: 
                    299: Keeping Deleted Code for Future Reference
                    300: -----------------------------------------
                    301: 
                    302: If you replace or delete a part of the program but want to keep the old
                    303: code around as a comment for future reference, the easy way to do this is
                    304: to put `#if 0' before it and `#endif' after it.
                    305: 
                    306: This works even if the code being turned off contains conditionals, but
                    307: they must be entire conditionals (balanced `#if' and `#endif').
                    308: 
                    309: 
                    310: File: cpp,  Node: Conditionals-Macros,  Next: #error Command,  Prev: Deleted Code,  Up: Conditionals
                    311: 
                    312: Conditionals and Macros
                    313: -----------------------
                    314: 
                    315: Conditionals are rarely useful except in connection with macros.  A `#if'
                    316: command whose expression uses no macros is equivalent to `#if 1' or `#if
                    317: 0'; you might as well determine which one, by computing the value of the
                    318: expression yourself, and then simplify the program.  But when the
                    319: expression uses macros, its value can vary from compilation to compilation.
                    320: 
                    321: For example, here is a conditional that tests the expression `BUFSIZE ==
                    322: 1020', where `BUFSIZE' must be a macro.
                    323: 
                    324:      #if BUFSIZE == 1020
                    325:        printf ("Large buffers!\n");
                    326:      #endif /* BUFSIZE is large */
                    327: 
                    328: The special operator `defined' may be used in `#if' expressions to test
                    329: whether a certain name is defined as a macro.  Either `defined NAME' or
                    330: `defined (NAME)' is an expression whose value is 1 if NAME is defined as
                    331: macro at the current point in the program, and 0 otherwise.  For the
                    332: `defined' operator it makes no difference what the definition of the macro
                    333: is; all that matters is whether there is a definition.  Thus, for example,
                    334: 
                    335:      #if defined (vax) || defined (ns16000)
                    336: 
                    337: would include the following code if either of the names `vax' and `ns16000'
                    338: is defined as a macro.
                    339: 
                    340: If a macro is defined and later undefined with `#undef', subsequent use of
                    341: the `defined' operator will return 0, because the name is no longer
                    342: defined.  If the macro is defined again with another `#define', `defined'
                    343: will recommence returning 1.
                    344: 
                    345: Conditionals that test just the definedness of one name are very common, so
                    346: there are two special short conditional commands for this case.  They are
                    347: 
                    348: `#ifdef NAME'
                    349:      is equivalent to `#if defined (NAME)'.
                    350: 
                    351: `#ifndef NAME'
                    352:      is equivalent to `#if ! defined (NAME)'.
                    353: 
                    354: Macro definitions can vary between compilations for several reasons.
                    355: 
                    356:    * Some macros are predefined on each kind of machine.  For example, on a
                    357:      Vax, the name `vax' is a predefined macro.  On other machines, it
                    358:      would not be defined.
                    359: 
                    360:    * Many more macros are defined by system header files.  Different
                    361:      systems and machines define different macros, or give them different
                    362:      values.  It is useful to test these macros with conditionals to avoid
                    363:      using a system feature on a machine where it is not implemented.
                    364: 
                    365:    * Macros are a common way of allowing users to customize a program for
                    366:      different machines or applications.  For example, the macro `BUFSIZE'
                    367:      might be defined in a configuration file for your program that is
                    368:      included as a header file in each source file.  You would use
                    369:      `BUFSIZE' in a preprocessor conditional in order to generate different
                    370:      code depending on the chosen configuration.
                    371: 
                    372:    * Macros can be defined or undefined with `-D' and `-U' command options
                    373:      when you compile the program.  You can arrange to compile the same
                    374:      source file into two different programs by choosing a macro name to
                    375:      specify which program you want, writing conditionals to test whether
                    376:      or how this macro is defined, and then controlling the state of the
                    377:      macro with compiler command options.  *note Invocation::.
                    378: 
                    379: 
                    380: File: cpp,  Node: #error Command,  Prev: Conditionals-Macros,  Up: Conditionals
                    381: 
                    382: The `#error' Command
                    383: --------------------
                    384: 
                    385: The command `#error' causes the preprocessor to report a fatal error.  The
                    386: rest of the line that follows `#error' is used as the error message.
                    387: 
                    388: You would use `#error' inside of a conditional that detects a combination
                    389: of parameters which you know the program does not properly support.  For
                    390: example, if you know that the program will not run properly on a Vax, you
                    391: might write
                    392: 
                    393:      #ifdef vax
                    394:      #error Won't work on Vaxen.  See comments at get_last_object.
                    395:      #endif
                    396: 
                    397: *note Nonstandard Predefined::, for why this works.
                    398: 
                    399: If you have several configuration parameters that must be set up by the
                    400: installation in a consistent way, you can use conditionals to detect an
                    401: inconsistency and report it with `#error'.  For example,
                    402: 
                    403:      #if HASH_TABLE_SIZE % 2 == 0 || HASH_TABLE_SIZE % 3 == 0 \
                    404:          || HASH_TABLE_SIZE % 5 == 0
                    405:      #error HASH_TABLE_SIZE should not be divisible by a small prime
                    406:      #endif
                    407: 
                    408: 
                    409: File: cpp,  Node: Combining Sources,  Next: Other Commands,  Prev: Conditionals,  Up: Top
                    410: 
                    411: Combining Source Files
                    412: ======================
                    413: 
                    414: One of the jobs of the C preprocessor is to inform the C compiler of where
                    415: each line of C code came from: which source file and which line number.
                    416: 
                    417: C code can come from multiple source files if you use `#include'; both
                    418: `#include' and the use of conditionals and macros can cause the line number
                    419: of a line in the preprocessor output to be different from the line's number
                    420: in the original source file.  You will appreciate the value of making both
                    421: the C compiler (in error messages) and symbolic debuggers such as GDB use
                    422: the line numbers in your source file.
                    423: 
                    424: The C preprocessor builds on this feature by offering a command by which
                    425: you can control the feature explicitly.  This is useful when a file for
                    426: input to the C preprocessor is the output from another program such as the
                    427: `bison' parser generator, which operates on another file that is the true
                    428: source file.  Parts of the output from `bison' are generated from scratch,
                    429: other parts come from a standard parser file.  The rest are copied nearly
                    430: verbatim from the source file, but their line numbers in the `bison' output
                    431: are not the same as their original line numbers.  Naturally you would like
                    432: compiler error messages and symbolic debuggers to know the original source
                    433: file and line number of each line in the `bison' output.
                    434: 
                    435: `bison' arranges this by writing `#line' commands into the output file. 
                    436: `#line' is a command that specifies the original line number and source
                    437: file name for subsequent input in the current preprocessor input file. 
                    438: `#line' has three variants:
                    439: 
                    440: `#line LINENUM'
                    441:      Here LINENUM is a decimal integer constant.  This specifies that the
                    442:      line number of the following line of input, in its original source
                    443:      file, was LINENUM.
                    444: 
                    445: `#line LINENUM FILENAME'
                    446:      Here LINENUM is a decimal integer constant and FILENAME is a string
                    447:      constant.  This specifies that the following line of input came
                    448:      originally from source file FILENAME and its line number there was
                    449:      LINENUM.  Keep in mind that FILENAME is not just a file name; it is
                    450:      surrounded by doublequote characters so that it looks like a string
                    451:      constant.
                    452: 
                    453: `#line ANYTHING ELSE'
                    454:      ANYTHING ELSE is checked for macro calls, which are expanded.  The
                    455:      result should be a decimal integer constant followed optionally by a
                    456:      string constant, as described above.
                    457: 
                    458: `#line' commands alter the results of the `__FILE__' and `__LINE__'
                    459: predefined macros from that point on.  *note Standard Predefined::.
                    460: 
                    461: 
                    462: File: cpp,  Node: Other Commands,  Next: Output,  Prev: Combining Sources,  Up: Top
                    463: 
                    464: Miscellaneous Preprocessor Commands
                    465: ===================================
                    466: 
                    467: This section describes two additional preprocesor commands.  They are not
                    468: very useful, but are mentioned for completeness.
                    469: 
                    470: The "null command" consists of a `#' followed by a Newline, with only
                    471: whitespace (including comments) in between.  A null command is understood
                    472: as a preprocessor command but has no effect on the preprocessor output. 
                    473: The primary significance of the existence of the null command is that an
                    474: input line consisting of just a `#' will produce no output, rather than a
                    475: line of output containing just a `#'.  Supposedly some old C programs
                    476: contain such lines.
                    477: 
                    478: The `#pragma' command is specified in the ANSI standard to have an
                    479: arbitrary implementation-defined effect.  In the GNU C preprocessor,
                    480: `#pragma' first attempts to run the game `rogue'; if that fails, it tries
                    481: to run the game `hack'; if that fails, it tries to run GNU Emacs displaying
                    482: the Tower of Hanoi; if that fails, it reports a fatal error.  In any case,
                    483: preprocessing does not continue.
                    484: 
                    485: 
                    486: File: cpp,  Node: Output,  Next: Invocation,  Prev: Other Commands,  Up: Top
                    487: 
                    488: C Preprocessor Output
                    489: =====================
                    490: 
                    491: The output from the C preprocessor looks much like the input, except that
                    492: all preprocessor command lines have been replaced with blank lines and all
                    493: comments with spaces.  Whitespace within a line is not altered; however, a
                    494: space is inserted after the expansions of most macro calls.
                    495: 
                    496: Source file name and line number information is conveyed by lines of the form
                    497: 
                    498:      # LINENUM FILENAME
                    499: 
                    500: which are inserted as needed into the middle of the input (but never within
                    501: a string or character constant).  Such a line means that the following line
                    502: originated in file FILENAME at line LINENUM.
                    503: 
                    504: 
                    505: File: cpp,  Node: Invocation,  Prev: Output,  Up: Top
                    506: 
                    507: Invoking the C Preprocessor
                    508: ===========================
                    509: 
                    510: Most often when you use the C preprocessor you will not have to invoke it
                    511: explicitly: the C compiler will do so automatically.  However, the
                    512: preprocessor is sometimes useful individually.
                    513: 
                    514: The C preprocessor expects two file names as arguments, INFILE and OUTFILE.
                    515:  The preprocessor reads INFILE together with any other files it specifies
                    516: with `#include'.  All the output generated by the combined input files is
                    517: written in OUTFILE.
                    518: 
                    519: Either INFILE or OUTFILE may be `-', which as INFILE means to read from
                    520: standard input and as OUTFILE means to write to standard output.  Also, if
                    521: OUTFILE or both file names are omitted, the standard output and standard
                    522: input are used for the omitted file names.
                    523: 
                    524: Here is a table of command options accepted by the C preprocessor.  Most of
                    525: them can also be given when compiling a C program; they are passed along
                    526: automatically to the preprocessor when it is invoked by the compiler.
                    527: 
                    528: `-P'
                    529:      Inhibit generation of `#'-lines with line-number information in the
                    530:      output from the preprocessor (*Note Output::.).  This might be useful
                    531:      when running the preprocessor on something that is not C code and will
                    532:      be sent to a program which might be confused by the `#'-lines
                    533: 
                    534: `-C'
                    535:      Do not discard comments: pass them through to the output file. 
                    536:      Comments appearing in arguments of a macro call will be copied to the
                    537:      output before the expansion of the macro call.
                    538: 
                    539: `-T'
                    540:      Process ANSI standard trigraph sequences.  These are three-character
                    541:      sequences, all starting with `??', that are defined by ANSI C to stand
                    542:      for single characters.  For example, `??/' stands for `\', so `'??/n''
                    543:      is a character constant for Newline.  Strictly speaking, the GNU C
                    544:      preprocessor does not support all programs in ANSI Standard C unless
                    545:      `-T' is used, but if you ever notice the difference it will be with
                    546:      relief.
                    547: 
                    548:      You don't want to know any more about trigraphs.
                    549: 
                    550: `-pedantic'
                    551:      Issue warnings required by the ANSI C standard in certain cases such
                    552:      as when text other than a comment follows `#else' or `#endif'.
                    553: 
                    554: `-I DIRECTORY'
                    555:      Add the directory DIRECTORY to the end of the list of directories to
                    556:      be searched for header files (*Note Include Syntax::.).  This can be
                    557:      used to override a system header file, substituting your own version,
                    558:      since these directories are searched before the system header file
                    559:      directories.  If you use more than one `-I' option, the directories
                    560:      are scanned in left-to-right order; the standard system directories
                    561:      come after.
                    562: 
                    563: `-I-'
                    564:      Any directories specified with `-I' options before the `-I-' option
                    565:      are searched only for the case of `#include "FILE"'; they are not
                    566:      searched for `#include <FILE>'.
                    567: 
                    568:      If additional directories are specified with `-I' options after the
                    569:      `-I-', these directories are searched for all `#include' directives.
                    570: 
                    571:      In addition, the `-I-' option inhibits the use of the current
                    572:      directory as the first search directory for `#include "FILE"'. 
                    573:      Therefore, the current directory is searched only if it is requested
                    574:      explicitly with `-I.'.  Specifying both `-I-' and `-I.' allows you to
                    575:      control precisely which directories are searched before the current
                    576:      one and which are searched after.
                    577: 
                    578: `-nostdinc'
                    579:      Do not search the standard system directories for header files.  Only
                    580:      the directories you have specified with `-I' options (and the current
                    581:      directory, if appropriate) are searched.
                    582: 
                    583: `-D NAME'
                    584:      Predefine NAME as a macro, with definition `1'.
                    585: 
                    586: `-D NAME=DEFINITION'
                    587:      Predefine NAME as a macro, with definition DEFINITION.  There are no
                    588:      restrictions on the contents of DEFINITION, but if you are invoking
                    589:      the preprocessor from a shell or shell-like program you may need to
                    590:      use the shell's quoting syntax to protect characters such as spaces
                    591:      that have a meaning in the shell syntax.
                    592: 
                    593: `-U NAME'
                    594:      Do not predefine NAME.  If both `-U' and `-D' are specified for one
                    595:      name, the `-U' beats the `-D' and the name is not predefined.
                    596: 
                    597: `-undef'
                    598:      Do not predefine any nonstandard macros.
                    599: 
                    600: `-d'
                    601:      Instead of outputting the result of preprocessing, output a list of
                    602:      `#define' commands for all the macros defined during the execution of
                    603:      the preprocessor.
                    604: 
                    605: `-M'
                    606:      Instead of outputting the result of preprocessing, output a rule
                    607:      suitable for `make' describing the dependencies of the main source
                    608:      file.  The preprocessor outputs one `make' rule containing the object
                    609:      file name for that source file, a colon, and the names of all the
                    610:      included files.  If there are many included files then the rule is
                    611:      split into several lines using `\'-newline.
                    612: 
                    613:      This feature is used in automatic updating of makefiles.
                    614: 
                    615: `-MM'
                    616:      Like `-M' but mention only the files included with `#include "FILE"'. 
                    617:      System header files included with `#include <FILE>' are omitted.
                    618: 
                    619: `-i FILE'
                    620:      Process FILE as input, discarding the resulting output, before
                    621:      processing the regular input file.  Because the output generated from
                    622:      FILE is discarded, the only effect of `-i FILE' is to make the macros
                    623:      defined in FILE available for use in the main input.
                    624: 
                    625: 
                    626: File: cpp,  Node: Concept Index,  Next: Index,  Prev: Invocation,  Up: Top
                    627: 
                    628: Concept Index
                    629: *************
                    630: 
                    631: * Menu:
                    632: 
                    633: * cascaded macros: Cascaded Macros.
                    634: * commands: Commands.
                    635: * concatenation: Concatenation.
                    636: * conditionals: Conditionals.
                    637: * header file: Header Files.
                    638: * line control: Combining Sources.
                    639: * macro body uses macro: Cascaded Macros.
                    640: * null command: Other Commands.
                    641: * options: Invocation.
                    642: * output format: Output.
                    643: * predefined macros: Predefined.
                    644: * preprocessor commands: Commands.
                    645: * redefining macros: Redefining.
                    646: * self-reference: Self-Reference.
                    647: * semicolons (after macro calls): Swallow Semicolon.
                    648: * side effects (in macro arguments): Side Effects.
                    649: * stringification: Stringification.
                    650: * undefining macros: Undefining.
                    651: * unsafe macros: Side Effects.
                    652: 
                    653:  
                    654: File: cpp,  Node: Index,  Prev: Concept Index,  Up: Top
                    655: 
                    656: Index of Commands, Macros and Options
                    657: *************************************
                    658: 
                    659: * Menu:
                    660: 
                    661: * #elif: #elif Command.
                    662: * #else: #else Command.
                    663: * #error: #error Command.
                    664: * #if: Conditional Syntax.
                    665: * #ifdef: Conditionals-Macros.
                    666: * #ifndef: Conditionals-Macros.
                    667: * #include: Include Syntax.
                    668: * #line: Combining Sources.
                    669: * #pragma: Other Commands.
                    670: * -C: Invocation.
                    671: * -D: Invocation.
                    672: * -I: Invocation.
                    673: * -M: Invocation.
                    674: * -MM: Invocation.
                    675: * -P: Invocation.
                    676: * -T: Invocation.
                    677: * -U: Invocation.
                    678: * -d: Invocation.
                    679: * -i: Invocation.
                    680: * -pedantic: Invocation.
                    681: * -undef: Invocation.
                    682: * BSD: Nonstandard Predefined.
                    683: * M68020: Nonstandard Predefined.
                    684: * __DATE__: Standard Predefined.
                    685: * __FILE__: Standard Predefined.
                    686: * __LINE__: Standard Predefined.
                    687: * __STDC__: Standard Predefined.
                    688: * __TIME__: Standard Predefined.
                    689: * defined: Conditionals-Macros.
                    690: * m68k: Nonstandard Predefined.
                    691: * mc68000: Nonstandard Predefined.
                    692: * ns32000: Nonstandard Predefined.
                    693: * pyr: Nonstandard Predefined.
                    694: * sequent: Nonstandard Predefined.
                    695: * sun: Nonstandard Predefined.
                    696: * system header files: Header Uses.
                    697: * unix: Nonstandard Predefined.
                    698: * vax: Nonstandard Predefined.
                    699: 
                    700:  

unix.superglobalmegacorp.com

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