|
|
1.1.1.5 ! root 1: This is Info file cpp.info, produced by Makeinfo-1.55 from the input 1.1.1.2 root 2: file cpp.texi. 1.1 root 3: 4: This file documents the GNU C Preprocessor. 5: 1.1.1.5 ! root 6: Copyright 1987, 1989, 1991, 1992, 1993, 1994 Free Software ! 7: Foundation, Inc. 1.1 root 8: 1.1.1.2 root 9: Permission is granted to make and distribute verbatim copies of this 10: manual provided the copyright notice and this permission notice are 11: preserved on all copies. 1.1 root 12: 13: Permission is granted to copy and distribute modified versions of 14: this manual under the conditions for verbatim copying, provided also 15: that the entire resulting derived work is distributed under the terms 16: of a permission notice identical to this one. 17: 18: Permission is granted to copy and distribute translations of this 19: manual into another language, under the above conditions for modified 20: versions. 21: 22: 1.1.1.5 ! root 23: File: cpp.info, Node: Macro Parentheses, Next: Swallow Semicolon, Prev: Misnesting, Up: Macro Pitfalls ! 24: ! 25: Unintended Grouping of Arithmetic ! 26: ................................. ! 27: ! 28: You may have noticed that in most of the macro definition examples ! 29: shown above, each occurrence of a macro argument name had parentheses ! 30: around it. In addition, another pair of parentheses usually surround ! 31: the entire macro definition. Here is why it is best to write macros ! 32: that way. ! 33: ! 34: Suppose you define a macro as follows, ! 35: ! 36: #define ceil_div(x, y) (x + y - 1) / y ! 37: ! 38: whose purpose is to divide, rounding up. (One use for this operation is ! 39: to compute how many `int' objects are needed to hold a certain number ! 40: of `char' objects.) Then suppose it is used as follows: ! 41: ! 42: a = ceil_div (b & c, sizeof (int)); ! 43: ! 44: This expands into ! 45: ! 46: a = (b & c + sizeof (int) - 1) / sizeof (int); ! 47: ! 48: which does not do what is intended. The operator-precedence rules of C ! 49: make it equivalent to this: ! 50: ! 51: a = (b & (c + sizeof (int) - 1)) / sizeof (int); ! 52: ! 53: But what we want is this: ! 54: ! 55: a = ((b & c) + sizeof (int) - 1)) / sizeof (int); ! 56: ! 57: Defining the macro as ! 58: ! 59: #define ceil_div(x, y) ((x) + (y) - 1) / (y) ! 60: ! 61: provides the desired result. ! 62: ! 63: However, unintended grouping can result in another way. Consider ! 64: `sizeof ceil_div(1, 2)'. That has the appearance of a C expression ! 65: that would compute the size of the type of `ceil_div (1, 2)', but in ! 66: fact it means something very different. Here is what it expands to: ! 67: ! 68: sizeof ((1) + (2) - 1) / (2) ! 69: ! 70: This would take the size of an integer and divide it by two. The ! 71: precedence rules have put the division outside the `sizeof' when it was ! 72: intended to be inside. ! 73: ! 74: Parentheses around the entire macro definition can prevent such ! 75: problems. Here, then, is the recommended way to define `ceil_div': ! 76: ! 77: #define ceil_div(x, y) (((x) + (y) - 1) / (y)) ! 78: ! 79: 1.1 root 80: File: cpp.info, Node: Swallow Semicolon, Next: Side Effects, Prev: Macro Parentheses, Up: Macro Pitfalls 81: 82: Swallowing the Semicolon 83: ........................ 84: 85: Often it is desirable to define a macro that expands into a compound 86: statement. Consider, for example, the following macro, that advances a 87: pointer (the argument `p' says where to find it) across whitespace 88: characters: 89: 90: #define SKIP_SPACES (p, limit) \ 91: { register char *lim = (limit); \ 92: while (p != lim) { \ 93: if (*p++ != ' ') { \ 94: p--; break; }}} 95: 1.1.1.2 root 96: Here Backslash-Newline is used to split the macro definition, which must 97: be a single line, so that it resembles the way such C code would be 98: laid out if not part of a macro definition. 1.1 root 99: 100: A call to this macro might be `SKIP_SPACES (p, lim)'. Strictly 101: speaking, the call expands to a compound statement, which is a complete 102: statement with no need for a semicolon to end it. But it looks like a 103: function call. So it minimizes confusion if you can use it like a 104: function call, writing a semicolon afterward, as in `SKIP_SPACES (p, 105: lim);' 106: 107: But this can cause trouble before `else' statements, because the 108: semicolon is actually a null statement. Suppose you write 109: 110: if (*p != 0) 111: SKIP_SPACES (p, lim); 112: else ... 113: 114: The presence of two statements--the compound statement and a null 1.1.1.2 root 115: statement--in between the `if' condition and the `else' makes invalid C 116: code. 1.1 root 117: 118: The definition of the macro `SKIP_SPACES' can be altered to solve 119: this problem, using a `do ... while' statement. Here is how: 120: 121: #define SKIP_SPACES (p, limit) \ 122: do { register char *lim = (limit); \ 123: while (p != lim) { \ 124: if (*p++ != ' ') { \ 125: p--; break; }}} \ 126: while (0) 127: 128: Now `SKIP_SPACES (p, lim);' expands into 129: 130: do {...} while (0); 131: 132: which is one statement. 133: 134: 135: File: cpp.info, Node: Side Effects, Next: Self-Reference, Prev: Swallow Semicolon, Up: Macro Pitfalls 136: 137: Duplication of Side Effects 138: ........................... 139: 140: Many C programs define a macro `min', for "minimum", like this: 141: 142: #define min(X, Y) ((X) < (Y) ? (X) : (Y)) 143: 144: When you use this macro with an argument containing a side effect, 145: as shown here, 146: 147: next = min (x + y, foo (z)); 148: 149: it expands as follows: 150: 151: next = ((x + y) < (foo (z)) ? (x + y) : (foo (z))); 152: 153: where `x + y' has been substituted for `X' and `foo (z)' for `Y'. 154: 155: The function `foo' is used only once in the statement as it appears 1.1.1.2 root 156: in the program, but the expression `foo (z)' has been substituted twice 157: into the macro expansion. As a result, `foo' might be called two times 158: when the statement is executed. If it has side effects or if it takes 159: a long time to compute, the results might not be what you intended. We 160: say that `min' is an "unsafe" macro. 1.1 root 161: 162: The best solution to this problem is to define `min' in a way that 163: computes the value of `foo (z)' only once. The C language offers no 164: standard way to do this, but it can be done with GNU C extensions as 165: follows: 166: 167: #define min(X, Y) \ 168: ({ typeof (X) __x = (X), __y = (Y); \ 169: (__x < __y) ? __x : __y; }) 170: 171: If you do not wish to use GNU C extensions, the only solution is to 172: be careful when *using* the macro `min'. For example, you can 173: calculate the value of `foo (z)', save it in a variable, and use that 174: variable in `min': 175: 176: #define min(X, Y) ((X) < (Y) ? (X) : (Y)) 177: ... 178: { 179: int tem = foo (z); 180: next = min (x + y, tem); 181: } 182: 183: (where we assume that `foo' returns type `int'). 184: 185: 186: File: cpp.info, Node: Self-Reference, Next: Argument Prescan, Prev: Side Effects, Up: Macro Pitfalls 187: 188: Self-Referential Macros 189: ....................... 190: 191: A "self-referential" macro is one whose name appears in its 1.1.1.3 root 192: definition. A special feature of ANSI Standard C is that the 1.1 root 193: self-reference is not considered a macro call. It is passed into the 194: preprocessor output unchanged. 195: 196: Let's consider an example: 197: 198: #define foo (4 + foo) 199: 200: where `foo' is also a variable in your program. 201: 202: Following the ordinary rules, each reference to `foo' will expand 203: into `(4 + foo)'; then this will be rescanned and will expand into `(4 1.1.1.2 root 204: + (4 + foo))'; and so on until it causes a fatal error (memory full) in 205: the preprocessor. 1.1 root 206: 207: However, the special rule about self-reference cuts this process 208: short after one step, at `(4 + foo)'. Therefore, this macro definition 209: has the possibly useful effect of causing the program to add 4 to the 210: value of `foo' wherever `foo' is referred to. 211: 1.1.1.2 root 212: In most cases, it is a bad idea to take advantage of this feature. A 213: person reading the program who sees that `foo' is a variable will not 214: expect that it is a macro as well. The reader will come across the 1.1 root 215: identifier `foo' in the program and think its value should be that of 216: the variable `foo', whereas in fact the value is four greater. 217: 218: The special rule for self-reference applies also to "indirect" 219: self-reference. This is the case where a macro X expands to use a 1.1.1.2 root 220: macro `y', and the expansion of `y' refers to the macro `x'. The 221: resulting reference to `x' comes indirectly from the expansion of `x', 222: so it is a self-reference and is not further expanded. Thus, after 1.1 root 223: 224: #define x (4 + y) 225: #define y (2 * x) 226: 227: `x' would expand into `(4 + (2 * x))'. Clear? 228: 1.1.1.2 root 229: But suppose `y' is used elsewhere, not from the definition of `x'. 1.1 root 230: Then the use of `x' in the expansion of `y' is not a self-reference 231: because `x' is not "in progress". So it does expand. However, the 232: expansion of `x' contains a reference to `y', and that is an indirect 1.1.1.3 root 233: self-reference now because `y' is "in progress". The result is that 234: `y' expands to `(2 * (4 + y))'. 1.1 root 235: 236: It is not clear that this behavior would ever be useful, but it is 237: specified by the ANSI C standard, so you may need to understand it. 238: 239: 240: File: cpp.info, Node: Argument Prescan, Next: Cascaded Macros, Prev: Self-Reference, Up: Macro Pitfalls 241: 242: Separate Expansion of Macro Arguments 243: ..................................... 244: 245: We have explained that the expansion of a macro, including the 246: substituted actual arguments, is scanned over again for macro calls to 247: be expanded. 248: 249: What really happens is more subtle: first each actual argument text 250: is scanned separately for macro calls. Then the results of this are 1.1.1.2 root 251: substituted into the macro body to produce the macro expansion, and the 252: macro expansion is scanned again for macros to expand. 1.1 root 253: 1.1.1.2 root 254: The result is that the actual arguments are scanned *twice* to expand 255: macro calls in them. 1.1 root 256: 257: Most of the time, this has no effect. If the actual argument 1.1.1.3 root 258: contained any macro calls, they are expanded during the first scan. 1.1 root 259: The result therefore contains no macro calls, so the second scan does 1.1.1.3 root 260: not change it. If the actual argument were substituted as given, with 1.1 root 261: no prescan, the single remaining scan would find the same macro calls 262: and produce the same results. 263: 264: You might expect the double scan to change the results when a 265: self-referential macro is used in an actual argument of another macro 1.1.1.2 root 266: (*note Self-Reference::.): the self-referential macro would be expanded 267: once in the first scan, and a second time in the second scan. But this 268: is not what happens. The self-references that do not expand in the 269: first scan are marked so that they will not expand in the second scan 270: either. 1.1 root 271: 272: The prescan is not done when an argument is stringified or 1.1.1.3 root 273: concatenated. Thus, 1.1 root 274: 275: #define str(s) #s 276: #define foo 4 277: str (foo) 278: 279: expands to `"foo"'. Once more, prescan has been prevented from having 280: any noticeable effect. 281: 1.1.1.2 root 282: More precisely, stringification and concatenation use the argument as 283: written, in un-prescanned form. The same actual argument would be used 284: in prescanned form if it is substituted elsewhere without 1.1 root 285: stringification or concatenation. 286: 287: #define str(s) #s lose(s) 288: #define foo 4 289: str (foo) 290: 291: expands to `"foo" lose(4)'. 292: 293: You might now ask, "Why mention the prescan, if it makes no 1.1.1.3 root 294: difference? And why not skip it and make the preprocessor faster?" 295: The answer is that the prescan does make a difference in three special 1.1 root 296: cases: 297: 298: * Nested calls to a macro. 299: 300: * Macros that call other macros that stringify or concatenate. 301: 302: * Macros whose expansions contain unshielded commas. 303: 304: We say that "nested" calls to a macro occur when a macro's actual 305: argument contains a call to that very macro. For example, if `f' is a 306: macro that expects one argument, `f (f (1))' is a nested pair of calls 307: to `f'. The desired expansion is made by expanding `f (1)' and 308: substituting that into the definition of `f'. The prescan causes the 1.1.1.3 root 309: expected result to happen. Without the prescan, `f (1)' itself would 310: be substituted as an actual argument, and the inner use of `f' would 311: appear during the main scan as an indirect self-reference and would not 312: be expanded. Here, the prescan cancels an undesirable side effect (in 313: the medical, not computational, sense of the term) of the special rule 314: for self-referential macros. 1.1 root 315: 316: But prescan causes trouble in certain other cases of nested macro 1.1.1.3 root 317: calls. Here is an example: 1.1 root 318: 319: #define foo a,b 320: #define bar(x) lose(x) 321: #define lose(x) (1 + (x)) 322: 323: bar(foo) 324: 325: We would like `bar(foo)' to turn into `(1 + (foo))', which would then 326: turn into `(1 + (a,b))'. But instead, `bar(foo)' expands into 327: `lose(a,b)', and you get an error because `lose' requires a single 328: argument. In this case, the problem is easily solved by the same 329: parentheses that ought to be used to prevent misnesting of arithmetic 330: operations: 331: 332: #define foo (a,b) 333: #define bar(x) lose((x)) 334: 335: The problem is more serious when the operands of the macro are not 336: expressions; for example, when they are statements. Then parentheses 337: are unacceptable because they would make for invalid C code: 338: 339: #define foo { int a, b; ... } 340: 341: In GNU C you can shield the commas using the `({...})' construct which 342: turns a compound statement into an expression: 343: 344: #define foo ({ int a, b; ... }) 345: 346: Or you can rewrite the macro definition to avoid such commas: 347: 348: #define foo { int a; int b; ... } 349: 350: There is also one case where prescan is useful. It is possible to 1.1.1.2 root 351: use prescan to expand an argument and then stringify it--if you use two 352: levels of macros. Let's add a new macro `xstr' to the example shown 353: above: 1.1 root 354: 355: #define xstr(s) str(s) 356: #define str(s) #s 357: #define foo 4 358: xstr (foo) 359: 1.1.1.2 root 360: This expands into `"4"', not `"foo"'. The reason for the difference 361: is that the argument of `xstr' is expanded at prescan (because `xstr' 1.1.1.3 root 362: does not specify stringification or concatenation of the argument). 1.1.1.2 root 363: The result of prescan then forms the actual argument for `str'. `str' 364: uses its argument without prescan because it performs stringification; 365: but it cannot prevent or undo the prescanning already done by `xstr'. 1.1 root 366: 367: 1.1.1.2 root 368: File: cpp.info, Node: Cascaded Macros, Next: Newlines in Args, Prev: Argument Prescan, Up: Macro Pitfalls 1.1 root 369: 370: Cascaded Use of Macros 371: ...................... 372: 373: A "cascade" of macros is when one macro's body contains a reference 374: to another macro. This is very common practice. For example, 375: 376: #define BUFSIZE 1020 377: #define TABLESIZE BUFSIZE 378: 1.1.1.2 root 379: This is not at all the same as defining `TABLESIZE' to be `1020'. 1.1 root 380: The `#define' for `TABLESIZE' uses exactly the body you specify--in 381: this case, `BUFSIZE'--and does not check to see whether it too is the 382: name of a macro. 383: 1.1.1.2 root 384: It's only when you *use* `TABLESIZE' that the result of its expansion 385: is checked for more macro names. 1.1 root 386: 1.1.1.2 root 387: This makes a difference if you change the definition of `BUFSIZE' at 388: some point in the source file. `TABLESIZE', defined as shown, will 1.1 root 389: always expand using the definition of `BUFSIZE' that is currently in 390: effect: 391: 392: #define BUFSIZE 1020 393: #define TABLESIZE BUFSIZE 394: #undef BUFSIZE 395: #define BUFSIZE 37 396: 1.1.1.5 ! root 397: Now `TABLESIZE' expands (in two stages) to `37'. (The `#undef' is to ! 398: prevent any warning about the nontrivial redefinition of `BUFSIZE'.) 1.1 root 399: 400: 1.1.1.2 root 401: File: cpp.info, Node: Newlines in Args, Prev: Cascaded Macros, Up: Macro Pitfalls 402: 403: Newlines in Macro Arguments 404: --------------------------- 405: 406: Traditional macro processing carries forward all newlines in macro 407: arguments into the expansion of the macro. This means that, if some of 408: the arguments are substituted more than once, or not at all, or out of 409: order, newlines can be duplicated, lost, or moved around within the 410: expansion. If the expansion consists of multiple statements, then the 411: effect is to distort the line numbers of some of these statements. The 412: result can be incorrect line numbers, in error messages or displayed in 413: a debugger. 414: 415: The GNU C preprocessor operating in ANSI C mode adjusts appropriately 416: for multiple use of an argument--the first use expands all the 417: newlines, and subsequent uses of the same argument produce no newlines. 418: But even in this mode, it can produce incorrect line numbering if 419: arguments are used out of order, or not used at all. 420: 421: Here is an example illustrating this problem: 422: 423: #define ignore_second_arg(a,b,c) a; c 424: 425: ignore_second_arg (foo (), 426: ignored (), 427: syntax error); 428: 429: The syntax error triggered by the tokens `syntax error' results in an 430: error message citing line four, even though the statement text comes 431: from line five. 432: 433: 1.1 root 434: File: cpp.info, Node: Conditionals, Next: Combining Sources, Prev: Macros, Up: Top 435: 436: Conditionals 437: ============ 438: 1.1.1.2 root 439: In a macro processor, a "conditional" is a command that allows a part 1.1.1.3 root 440: of the program to be ignored during compilation, on some conditions. 441: In the C preprocessor, a conditional can test either an arithmetic 1.1.1.2 root 442: expression or whether a name is defined as a macro. 1.1 root 443: 444: A conditional in the C preprocessor resembles in some ways an `if' 1.1.1.2 root 445: statement in C, but it is important to understand the difference between 446: them. The condition in an `if' statement is tested during the execution 447: of your program. Its purpose is to allow your program to behave 1.1.1.3 root 448: differently from run to run, depending on the data it is operating on. 1.1.1.2 root 449: The condition in a preprocessor conditional command is tested when your 1.1.1.3 root 450: program is compiled. Its purpose is to allow different code to be 1.1.1.2 root 451: included in the program depending on the situation at the time of 452: compilation. 1.1 root 453: 454: * Menu: 455: 456: * Uses: Conditional Uses. What conditionals are for. 457: * Syntax: Conditional Syntax. How conditionals are written. 458: * Deletion: Deleted Code. Making code into a comment. 459: * Macros: Conditionals-Macros. Why conditionals are used with macros. 1.1.1.2 root 460: * Assertions:: How and why to use assertions. 1.1 root 461: * Errors: #error Command. Detecting inconsistent compilation parameters. 462: 463: 1.1.1.2 root 464: File: cpp.info, Node: Conditional Uses, Next: Conditional Syntax, Up: Conditionals 1.1 root 465: 466: Why Conditionals are Used 467: ------------------------- 468: 469: Generally there are three kinds of reason to use a conditional. 470: 471: * A program may need to use different code depending on the machine 472: or operating system it is to run on. In some cases the code for 1.1.1.2 root 473: one operating system may be erroneous on another operating system; 474: for example, it might refer to library routines that do not exist 475: on the other system. When this happens, it is not enough to avoid 476: executing the invalid code: merely having it in the program makes 477: it impossible to link the program and run it. With a preprocessor 478: conditional, the offending code can be effectively excised from 479: the program when it is not valid. 1.1 root 480: 481: * You may want to be able to compile the same source file into two 1.1.1.2 root 482: different programs. Sometimes the difference between the programs 483: is that one makes frequent time-consuming consistency checks on its 1.1.1.5 ! root 484: intermediate data, or prints the values of those data for ! 485: debugging, while the other does not. 1.1 root 486: 487: * A conditional whose condition is always false is a good way to 1.1.1.2 root 488: exclude code from the program but keep it as a sort of comment for 489: future reference. 1.1 root 490: 491: Most simple programs that are intended to run on only one machine 492: will not need to use preprocessor conditionals. 493: 494: 495: File: cpp.info, Node: Conditional Syntax, Next: Deleted Code, Prev: Conditional Uses, Up: Conditionals 496: 497: Syntax of Conditionals 498: ---------------------- 499: 500: A conditional in the C preprocessor begins with a "conditional 1.1.1.3 root 501: command": `#if', `#ifdef' or `#ifndef'. *Note Conditionals-Macros::, 1.1.1.2 root 502: for information on `#ifdef' and `#ifndef'; only `#if' is explained here. 1.1 root 503: 504: * Menu: 505: 506: * If: #if Command. Basic conditionals using `#if' and `#endif'. 507: * Else: #else Command. Including some text if the condition fails. 508: * Elif: #elif Command. Testing several alternative possibilities. 509: 510: 1.1.1.2 root 511: File: cpp.info, Node: #if Command, Next: #else Command, Up: Conditional Syntax 1.1 root 512: 513: The `#if' Command 514: ................. 515: 516: The `#if' command in its simplest form consists of 517: 518: #if EXPRESSION 519: CONTROLLED TEXT 520: #endif /* EXPRESSION */ 521: 522: The comment following the `#endif' is not required, but it is a good 523: practice because it helps people match the `#endif' to the 524: corresponding `#if'. Such comments should always be used, except in 525: short conditionals that are not nested. In fact, you can put anything 526: at all after the `#endif' and it will be ignored by the GNU C 527: preprocessor, but only comments are acceptable in ANSI Standard C. 528: 529: EXPRESSION is a C expression of integer type, subject to stringent 530: restrictions. It may contain 531: 532: * Integer constants, which are all regarded as `long' or `unsigned 533: long'. 534: 535: * Character constants, which are interpreted according to the 536: character set and conventions of the machine and operating system 1.1.1.2 root 537: on which the preprocessor is running. The GNU C preprocessor uses 538: the C data type `char' for these character constants; therefore, 539: whether some character codes are negative is determined by the C 540: compiler used to compile the preprocessor. If it treats `char' as 541: signed, then character codes large enough to set the sign bit will 542: be considered negative; otherwise, no character code is considered 543: negative. 1.1 root 544: 545: * Arithmetic operators for addition, subtraction, multiplication, 1.1.1.5 ! root 546: division, bitwise operations, shifts, comparisons, and logical ! 547: operations (`&&' and `||'). 1.1 root 548: 549: * Identifiers that are not macros, which are all treated as zero(!). 550: 1.1.1.2 root 551: * Macro calls. All macro calls in the expression are expanded before 552: actual computation of the expression's value begins. 1.1 root 553: 1.1.1.2 root 554: Note that `sizeof' operators and `enum'-type values are not allowed. 1.1 root 555: `enum'-type values, like all other identifiers that are not taken as 556: macro calls and expanded, are treated as zero. 557: 1.1.1.2 root 558: The CONTROLLED TEXT inside of a conditional can include preprocessor 559: commands. Then the commands inside the conditional are obeyed only if 560: that branch of the conditional succeeds. The text can also contain 561: other conditional groups. However, the `#if' and `#endif' commands 562: must balance. 1.1 root 563: 564: 565: File: cpp.info, Node: #else Command, Next: #elif Command, Prev: #if Command, Up: Conditional Syntax 566: 567: The `#else' Command 568: ................... 569: 570: The `#else' command can be added to a conditional to provide 1.1.1.2 root 571: alternative text to be used if the condition is false. This is what it 572: looks like: 1.1 root 573: 574: #if EXPRESSION 575: TEXT-IF-TRUE 576: #else /* Not EXPRESSION */ 577: TEXT-IF-FALSE 578: #endif /* Not EXPRESSION */ 579: 580: If EXPRESSION is nonzero, and thus the TEXT-IF-TRUE is active, then 581: `#else' acts like a failing conditional and the TEXT-IF-FALSE is 582: ignored. Contrariwise, if the `#if' conditional fails, the 583: TEXT-IF-FALSE is considered included. 584: 585: 586: File: cpp.info, Node: #elif Command, Prev: #else Command, Up: Conditional Syntax 587: 588: The `#elif' Command 589: ................... 590: 591: One common case of nested conditionals is used to check for more 592: than two possible alternatives. For example, you might have 593: 594: #if X == 1 595: ... 596: #else /* X != 1 */ 597: #if X == 2 598: ... 599: #else /* X != 2 */ 600: ... 601: #endif /* X != 2 */ 602: #endif /* X != 1 */ 603: 604: Another conditional command, `#elif', allows this to be abbreviated 605: as follows: 606: 607: #if X == 1 608: ... 609: #elif X == 2 610: ... 611: #else /* X != 2 and X != 1*/ 612: ... 613: #endif /* X != 2 and X != 1*/ 614: 615: `#elif' stands for "else if". Like `#else', it goes in the middle 616: of a `#if'-`#endif' pair and subdivides it; it does not require a 1.1.1.2 root 617: matching `#endif' of its own. Like `#if', the `#elif' command includes 618: an expression to be tested. 1.1 root 619: 620: The text following the `#elif' is processed only if the original 1.1.1.3 root 621: `#if'-condition failed and the `#elif' condition succeeds. More than 1.1 root 622: one `#elif' can go in the same `#if'-`#endif' group. Then the text 623: after each `#elif' is processed only if the `#elif' condition succeeds 1.1.1.2 root 624: after the original `#if' and any previous `#elif' commands within it 625: have failed. `#else' is equivalent to `#elif 1', and `#else' is 626: allowed after any number of `#elif' commands, but `#elif' may not follow 627: `#else'. 1.1 root 628: 629: 630: File: cpp.info, Node: Deleted Code, Next: Conditionals-Macros, Prev: Conditional Syntax, Up: Conditionals 631: 632: Keeping Deleted Code for Future Reference 633: ----------------------------------------- 634: 635: If you replace or delete a part of the program but want to keep the 636: old code around as a comment for future reference, the easy way to do 1.1.1.5 ! root 637: this is to put `#if 0' before it and `#endif' after it. This is better ! 638: than using comment delimiters `/*' and `*/' since those won't work if ! 639: the code already contains comments (C comments do not nest). 1.1 root 640: 641: This works even if the code being turned off contains conditionals, 642: but they must be entire conditionals (balanced `#if' and `#endif'). 643: 1.1.1.5 ! root 644: Conversely, do not use `#if 0' for comments which are not C code. ! 645: Use the comment delimiters `/*' and `*/' instead. The interior of `#if ! 646: 0' must consist of complete tokens; in particular, singlequote ! 647: characters must balance. But comments often contain unbalanced ! 648: singlequote characters (known in English as apostrophes). These ! 649: confuse `#if 0'. They do not confuse `/*'. ! 650: 1.1 root 651: 1.1.1.2 root 652: File: cpp.info, Node: Conditionals-Macros, Next: Assertions, Prev: Deleted Code, Up: Conditionals 1.1 root 653: 654: Conditionals and Macros 655: ----------------------- 656: 1.1.1.2 root 657: Conditionals are useful in connection with macros or assertions, 658: because those are the only ways that an expression's value can vary 1.1.1.3 root 659: from one compilation to another. A `#if' command whose expression uses 1.1.1.2 root 660: no macros or assertions is equivalent to `#if 1' or `#if 0'; you might 661: as well determine which one, by computing the value of the expression 662: yourself, and then simplify the program. 1.1 root 663: 664: For example, here is a conditional that tests the expression 665: `BUFSIZE == 1020', where `BUFSIZE' must be a macro. 666: 667: #if BUFSIZE == 1020 668: printf ("Large buffers!\n"); 669: #endif /* BUFSIZE is large */ 670: 1.1.1.2 root 671: (Programmers often wish they could test the size of a variable or 672: data type in `#if', but this does not work. The preprocessor does not 673: understand `sizeof', or typedef names, or even the type keywords such 674: as `int'.) 675: 676: The special operator `defined' is used in `#if' expressions to test 677: whether a certain name is defined as a macro. Either `defined NAME' or 678: `defined (NAME)' is an expression whose value is 1 if NAME is defined 679: as macro at the current point in the program, and 0 otherwise. For the 680: `defined' operator it makes no difference what the definition of the 681: macro is; all that matters is whether there is a definition. Thus, for 682: example, 1.1 root 683: 684: #if defined (vax) || defined (ns16000) 685: 1.1.1.5 ! root 686: would succeed if either of the names `vax' and `ns16000' is defined as ! 687: a macro. You can test the same condition using assertions (*note ! 688: Assertions::.), like this: 1.1.1.2 root 689: 690: #if #cpu (vax) || #cpu (ns16000) 1.1 root 691: 692: If a macro is defined and later undefined with `#undef', subsequent 1.1.1.2 root 693: use of the `defined' operator returns 0, because the name is no longer 694: defined. If the macro is defined again with another `#define', 1.1 root 695: `defined' will recommence returning 1. 696: 1.1.1.5 ! root 697: Conditionals that test whether just one name is defined are very 1.1 root 698: common, so there are two special short conditional commands for this 1.1.1.2 root 699: case. 1.1 root 700: 701: `#ifdef NAME' 702: is equivalent to `#if defined (NAME)'. 703: 704: `#ifndef NAME' 705: is equivalent to `#if ! defined (NAME)'. 706: 707: Macro definitions can vary between compilations for several reasons. 708: 709: * Some macros are predefined on each kind of machine. For example, 710: on a Vax, the name `vax' is a predefined macro. On other 711: machines, it would not be defined. 712: 713: * Many more macros are defined by system header files. Different 714: systems and machines define different macros, or give them 715: different values. It is useful to test these macros with 1.1.1.2 root 716: conditionals to avoid using a system feature on a machine where it 717: is not implemented. 1.1 root 718: 719: * Macros are a common way of allowing users to customize a program 720: for different machines or applications. For example, the macro 721: `BUFSIZE' might be defined in a configuration file for your 1.1.1.2 root 722: program that is included as a header file in each source file. You 723: would use `BUFSIZE' in a preprocessor conditional in order to 1.1 root 724: generate different code depending on the chosen configuration. 725: 726: * Macros can be defined or undefined with `-D' and `-U' command 727: options when you compile the program. You can arrange to compile 728: the same source file into two different programs by choosing a 729: macro name to specify which program you want, writing conditionals 730: to test whether or how this macro is defined, and then controlling 1.1.1.3 root 731: the state of the macro with compiler command options. *Note 1.1 root 732: Invocation::. 733: 1.1.1.2 root 734: Assertions are usually predefined, but can be defined with 735: preprocessor commands or command-line options. 736: 1.1 root 737: 1.1.1.2 root 738: File: cpp.info, Node: Assertions, Next: #error Command, Prev: Conditionals-Macros, Up: Conditionals 739: 740: Assertions 741: ---------- 742: 743: "Assertions" are a more systematic alternative to macros in writing 744: conditionals to test what sort of computer or system the compiled 745: program will run on. Assertions are usually predefined, but you can 746: define them with preprocessor commands or command-line options. 747: 748: The macros traditionally used to describe the type of target are not 749: classified in any way according to which question they answer; they may 750: indicate a hardware architecture, a particular hardware model, an 751: operating system, a particular version of an operating system, or 752: specific configuration options. These are jumbled together in a single 753: namespace. In contrast, each assertion consists of a named question and 1.1.1.3 root 754: an answer. The question is usually called the "predicate". An 1.1.1.2 root 755: assertion looks like this: 756: 757: #PREDICATE (ANSWER) 758: 759: You must use a properly formed identifier for PREDICATE. The value of 760: ANSWER can be any sequence of words; all characters are significant 761: except for leading and trailing whitespace, and differences in internal 762: whitespace sequences are ignored. Thus, `x + y' is different from 763: `x+y' but equivalent to `x + y'. `)' is not allowed in an answer. 764: 765: Here is a conditional to test whether the answer ANSWER is asserted 766: for the predicate PREDICATE: 767: 768: #if #PREDICATE (ANSWER) 769: 770: There may be more than one answer asserted for a given predicate. If 771: you omit the answer, you can test whether *any* answer is asserted for 772: PREDICATE: 773: 774: #if #PREDICATE 775: 776: Most of the time, the assertions you test will be predefined 1.1.1.3 root 777: assertions. GNU C provides three predefined predicates: `system', 778: `cpu', and `machine'. `system' is for assertions about the type of 779: software, `cpu' describes the type of computer architecture, and 780: `machine' gives more information about the computer. For example, on a 781: GNU system, the following assertions would be true: 1.1.1.2 root 782: 783: #system (gnu) 784: #system (mach) 785: #system (mach 3) 786: #system (mach 3.SUBVERSION) 787: #system (hurd) 788: #system (hurd VERSION) 789: 1.1.1.4 root 790: and perhaps others. The alternatives with more or less version 1.1.1.2 root 791: information let you ask more or less detailed questions about the type 792: of system software. 793: 1.1.1.4 root 794: On a Unix system, you would find `#system (unix)' and perhaps one of: 795: `#system (aix)', `#system (bsd)', `#system (hpux)', `#system (lynx)', 796: `#system (mach)', `#system (posix)', `#system (svr3)', `#system 797: (svr4)', or `#system (xpg4)' with possible version numbers following. 798: 799: Other values for `system' are `#system (mvs)' and `#system (vms)'. 800: 1.1.1.2 root 801: *Portability note:* Many Unix C compilers provide only one answer 802: for the `system' assertion: `#system (unix)', if they support 803: assertions at all. This is less than useful. 804: 805: An assertion with a multi-word answer is completely different from 806: several assertions with individual single-word answers. For example, 807: the presence of `system (mach 3.0)' does not mean that `system (3.0)' 1.1.1.3 root 808: is true. It also does not directly imply `system (mach)', but in GNU 809: C, that last will normally be asserted as well. 1.1.1.2 root 810: 1.1.1.4 root 811: The current list of possible assertion values for `cpu' is: `#cpu 812: (a29k)', `#cpu (alpha)', `#cpu (arm)', `#cpu (clipper)', `#cpu 813: (convex)', `#cpu (elxsi)', `#cpu (tron)', `#cpu (h8300)', `#cpu 814: (i370)', `#cpu (i386)', `#cpu (i860)', `#cpu (i960)', `#cpu (m68k)', 815: `#cpu (m88k)', `#cpu (mips)', `#cpu (ns32k)', `#cpu (hppa)', `#cpu 816: (pyr)', `#cpu (ibm032)', `#cpu (rs6000)', `#cpu (sh)', `#cpu (sparc)', 817: `#cpu (spur)', `#cpu (tahoe)', `#cpu (vax)', `#cpu (we32000)'. 818: 1.1.1.2 root 819: You can create assertions within a C program using `#assert', like 820: this: 821: 822: #assert PREDICATE (ANSWER) 823: 824: (Note the absence of a `#' before PREDICATE.) 825: 826: Each time you do this, you assert a new true answer for PREDICATE. 827: Asserting one answer does not invalidate previously asserted answers; 828: they all remain true. The only way to remove an assertion is with 829: `#unassert'. `#unassert' has the same syntax as `#assert'. You can 830: also remove all assertions about PREDICATE like this: 831: 832: #unassert PREDICATE 833: 834: You can also add or cancel assertions using command options when you 835: run `gcc' or `cpp'. *Note Invocation::. 836: 837: 838: File: cpp.info, Node: #error Command, Prev: Assertions, Up: Conditionals 1.1 root 839: 840: The `#error' and `#warning' Commands 841: ------------------------------------ 842: 843: The command `#error' causes the preprocessor to report a fatal 1.1.1.2 root 844: error. The rest of the line that follows `#error' is used as the error 845: message. 1.1 root 846: 847: You would use `#error' inside of a conditional that detects a 848: combination of parameters which you know the program does not properly 849: support. For example, if you know that the program will not run 850: properly on a Vax, you might write 851: 1.1.1.5 ! root 852: #ifdef __vax__ 1.1 root 853: #error Won't work on Vaxen. See comments at get_last_object. 854: #endif 855: 856: *Note Nonstandard Predefined::, for why this works. 857: 858: If you have several configuration parameters that must be set up by 1.1.1.2 root 859: the installation in a consistent way, you can use conditionals to detect 860: an inconsistency and report it with `#error'. For example, 1.1 root 861: 862: #if HASH_TABLE_SIZE % 2 == 0 || HASH_TABLE_SIZE % 3 == 0 \ 863: || HASH_TABLE_SIZE % 5 == 0 864: #error HASH_TABLE_SIZE should not be divisible by a small prime 865: #endif 866: 867: The command `#warning' is like the command `#error', but causes the 1.1.1.2 root 868: preprocessor to issue a warning and continue preprocessing. The rest of 869: the line that follows `#warning' is used as the warning message. 1.1 root 870: 871: You might use `#warning' in obsolete header files, with a message 872: directing the user to the header file which should be used instead. 873: 874: 875: File: cpp.info, Node: Combining Sources, Next: Other Commands, Prev: Conditionals, Up: Top 876: 877: Combining Source Files 878: ====================== 879: 1.1.1.2 root 880: One of the jobs of the C preprocessor is to inform the C compiler of 881: where each line of C code came from: which source file and which line 882: number. 1.1 root 883: 884: C code can come from multiple source files if you use `#include'; 885: both `#include' and the use of conditionals and macros can cause the 886: line number of a line in the preprocessor output to be different from 1.1.1.2 root 887: the line's number in the original source file. You will appreciate the 888: value of making both the C compiler (in error messages) and symbolic 889: debuggers such as GDB use the line numbers in your source file. 1.1 root 890: 891: The C preprocessor builds on this feature by offering a command by 892: which you can control the feature explicitly. This is useful when a 1.1.1.2 root 893: file for input to the C preprocessor is the output from another program 894: such as the `bison' parser generator, which operates on another file 895: that is the true source file. Parts of the output from `bison' are 1.1.1.3 root 896: generated from scratch, other parts come from a standard parser file. 1.1.1.2 root 897: The rest are copied nearly verbatim from the source file, but their 898: line numbers in the `bison' output are not the same as their original 1.1.1.3 root 899: line numbers. Naturally you would like compiler error messages and 1.1.1.2 root 900: symbolic debuggers to know the original source file and line number of 901: each line in the `bison' input. 1.1 root 902: 903: `bison' arranges this by writing `#line' commands into the output 1.1.1.2 root 904: file. `#line' is a command that specifies the original line number and 905: source file name for subsequent input in the current preprocessor input 906: file. `#line' has three variants: 1.1 root 907: 908: `#line LINENUM' 909: Here LINENUM is a decimal integer constant. This specifies that 910: the line number of the following line of input, in its original 911: source file, was LINENUM. 912: 913: `#line LINENUM FILENAME' 914: Here LINENUM is a decimal integer constant and FILENAME is a 915: string constant. This specifies that the following line of input 1.1.1.2 root 916: came originally from source file FILENAME and its line number there 917: was LINENUM. Keep in mind that FILENAME is not just a file name; 918: it is surrounded by doublequote characters so that it looks like a 919: string constant. 1.1 root 920: 921: `#line ANYTHING ELSE' 1.1.1.3 root 922: ANYTHING ELSE is checked for macro calls, which are expanded. The 1.1.1.2 root 923: result should be a decimal integer constant followed optionally by 924: a string constant, as described above. 1.1 root 925: 926: `#line' commands alter the results of the `__FILE__' and `__LINE__' 927: predefined macros from that point on. *Note Standard Predefined::. 928: 1.1.1.2 root 929: The output of the preprocessor (which is the input for the rest of 930: the compiler) contains commands that look much like `#line' commands. 931: They start with just `#' instead of `#line', but this is followed by a 932: line number and file name as in `#line'. *Note Output::. 933: 1.1 root 934: 935: File: cpp.info, Node: Other Commands, Next: Output, Prev: Combining Sources, Up: Top 936: 937: Miscellaneous Preprocessor Commands 938: =================================== 939: 1.1.1.2 root 940: This section describes three additional preprocessor commands. They 941: are not very useful, but are mentioned for completeness. 1.1 root 942: 943: The "null command" consists of a `#' followed by a Newline, with 944: only whitespace (including comments) in between. A null command is 945: understood as a preprocessor command but has no effect on the 946: preprocessor output. The primary significance of the existence of the 947: null command is that an input line consisting of just a `#' will 1.1.1.3 root 948: produce no output, rather than a line of output containing just a `#'. 1.1.1.2 root 949: Supposedly some old C programs contain such lines. 1.1 root 950: 951: The ANSI standard specifies that the `#pragma' command has an 952: arbitrary, implementation-defined effect. In the GNU C preprocessor, 1.1.1.3 root 953: `#pragma' commands are not used, except for `#pragma once' (*note 954: Once-Only::.). However, they are left in the preprocessor output, so 955: they are available to the compilation pass. 1.1 root 956: 957: The `#ident' command is supported for compatibility with certain 958: other systems. It is followed by a line of text. On some systems, the 1.1.1.2 root 959: text is copied into a special place in the object file; on most systems, 960: the text is ignored and this command has no effect. Typically `#ident' 961: is only used in header files supplied with those systems where it is 962: meaningful. 1.1 root 963: 964: 965: File: cpp.info, Node: Output, Next: Invocation, Prev: Other Commands, Up: Top 966: 967: C Preprocessor Output 968: ===================== 969: 970: The output from the C preprocessor looks much like the input, except 971: that all preprocessor command lines have been replaced with blank lines 972: and all comments with spaces. Whitespace within a line is not altered; 973: however, a space is inserted after the expansions of most macro calls. 974: 975: Source file name and line number information is conveyed by lines of 976: the form 977: 1.1.1.2 root 978: # LINENUM FILENAME FLAGS 1.1 root 979: 980: which are inserted as needed into the middle of the input (but never 981: within a string or character constant). Such a line means that the 982: following line originated in file FILENAME at line LINENUM. 983: 1.1.1.2 root 984: After the file name comes zero or more flags, which are `1', `2' or 985: `3'. If there are multiple flags, spaces separate them. Here is what 986: the flags mean: 987: 988: `1' 989: This indicates the start of a new file. 990: 991: `2' 992: This indicates returning to a file (after having included another 993: file). 994: 995: `3' 996: This indicates that the following text comes from a system header 997: file, so certain warnings should be suppressed. 1.1 root 998:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.