|
|
1.1 ! root 1: .ds ZZ DEVELOPMENT PACKAGE ! 2: .TH MC68CPP 1 "630 MTG" ! 3: .SH NAME ! 4: mc68cpp \- the C language preprocessor ! 5: .SH SYNOPSIS ! 6: .B $DMD/lib/mc68cpp [ ! 7: option ... ! 8: .B ] ! 9: .B [ ! 10: ifile ! 11: .B [ ! 12: ofile ! 13: .B ] ] ! 14: .SH DESCRIPTION ! 15: .PP ! 16: .I Mc68cpp\^ ! 17: is the C language preprocessor which is invoked as the ! 18: first pass of any C compilation using the ! 19: .IR dmdcc (1) ! 20: command. Thus, the output of ! 21: .I mc68cpp\^ ! 22: is designed to be in a form acceptable as input ! 23: to the next pass of the C compiler. ! 24: As the C language evolves, ! 25: .I mc68cpp\^ ! 26: and the rest of the C compilation package will be ! 27: modified to follow these changes. ! 28: Therefore, the use of ! 29: .I mc68cpp\^ ! 30: other than in this framework is not suggested. ! 31: The preferred way to invoke ! 32: .I mc68cpp\^ ! 33: is through the ! 34: .IR dmdcc (1) ! 35: command, since the functionality of ! 36: .I mc68cpp\^ ! 37: may some day be moved elsewhere. See ! 38: .IR m4 (1) ! 39: for a general macro processor. ! 40: .PP ! 41: .I Mc68cpp\^ ! 42: optionally accepts two file names as arguments. ! 43: .I Ifile\^ ! 44: and ! 45: .I ofile\^ ! 46: are respectively the input and output ! 47: for the preprocessor. They default to standard input ! 48: and standard output if not supplied. ! 49: .PP ! 50: The following \fIoptions\fP to ! 51: .I mc68cpp\^ ! 52: are recognized: ! 53: .TP ! 54: .B \-P ! 55: Preprocesses the input without producing the line control ! 56: information used by the next pass of the C compiler. ! 57: .TP ! 58: .B \-C ! 59: By default, ! 60: .I mc68cpp\^ ! 61: strips C-style comments. If the ! 62: .B \-C ! 63: option is specified, all comments (except those found on ! 64: .I mc68cpp ! 65: directive lines) ! 66: are passed along. ! 67: .TP ! 68: .BI \-U name\^ ! 69: Removes any initial definition of ! 70: .IR name , ! 71: where ! 72: .I name\^ ! 73: is a reserved symbol ! 74: that is predefined by the particular preprocessor. ! 75: The current list of these possibly reserved symbols includes: ! 76: .PD 0 ! 77: .ne 3v ! 78: .RS 10 ! 79: .TP 19 ! 80: operating system: ! 81: ibm, gcos, os, tss, unix ! 82: .TP ! 83: hardware: ! 84: interdata, pdp11, u370, u3b, u3b5, vax, mc68000, mc68k16, mc68k32 ! 85: .TP ! 86: \s-1UNIX\s+1 variant: ! 87: .SM RES\*S, ! 88: .SM RT ! 89: .RE ! 90: .PD ! 91: .TP ! 92: .BI \-D name\^ ! 93: .PD 0 ! 94: .TP ! 95: .BI \-D name=def\^ ! 96: Defines ! 97: .I name\^ ! 98: as if by a ! 99: .B #define ! 100: directive. If no ! 101: .I =def\^ ! 102: is given, ! 103: .I name\^ ! 104: is defined as 1. ! 105: .bp ! 106: .PD ! 107: .TP ! 108: .BI \-I dir\^ ! 109: Changes the algorithm for searching for ! 110: .B #include ! 111: files ! 112: whose names do not begin with \f3/\fP ! 113: to look in ! 114: .I dir\^ ! 115: before looking in the directories on the standard list. ! 116: Thus, ! 117: .B #include ! 118: files whose names are enclosed in \f3"\|"\fP ! 119: will be searched for ! 120: first in the directory of the ! 121: .I ifile\^ ! 122: argument, ! 123: then in directories named in ! 124: .B \-I ! 125: options, ! 126: and last in directories on a standard list. ! 127: For ! 128: .B #include ! 129: files whose names are enclosed in ! 130: .BR <> , ! 131: the directory of the ! 132: .I ifile\^ ! 133: argument is not searched. ! 134: .PP ! 135: Two special names are understood by ! 136: .IR mc68cpp . ! 137: The name ! 138: .B _\^\^_\s-1LINE\s+1_\^\^_ ! 139: is defined as the current line number (as a decimal integer) as known by ! 140: .IR mc68cpp , ! 141: and ! 142: .B _\^\^_\s-1FILE\s+1_\^\^_ ! 143: is defined as the current file name (as a C string) as known by ! 144: .I mc68cpp.\^ ! 145: They can be used anywhere (including in macros) just as any ! 146: other defined name. ! 147: .PP ! 148: All ! 149: .I mc68cpp\^ ! 150: directives start with lines whose first character is ! 151: .BR # . ! 152: The directives are: ! 153: .TP ! 154: .BI #define " name" " " token-string ! 155: Replaces subsequent instances of ! 156: .I name\^ ! 157: with ! 158: .IR token-string . ! 159: .TP ! 160: \fB#define\fI name\fB(\fI arg\fB, ...,\fI arg\fB )\fI token-string\fR ! 161: Notice that there can be no space between ! 162: .I name ! 163: and the ! 164: .BR ( . ! 165: Replaces subsequent instances of ! 166: .I name ! 167: followed by a ! 168: .BR ( , ! 169: a list of comma separated tokens, and a ! 170: .B ) ! 171: by ! 172: .I token-string ! 173: where each occurrence of an ! 174: .I arg ! 175: in the ! 176: .I token-string ! 177: is replaced by the corresponding token in the comma separated list. ! 178: .TP ! 179: .BI #undef " name" ! 180: Causes the definition of ! 181: .I name ! 182: (if any) to be forgotten from now on. ! 183: .TP ! 184: \fB#include\fI "filename" ! 185: .PD 0 ! 186: .TP ! 187: .BI #include " " < filename > ! 188: Include at this point the contents of ! 189: .I filename ! 190: (which will then be run through ! 191: .IR mc68cpp ). ! 192: When the ! 193: .BI < filename > ! 194: notation is used, ! 195: .I filename ! 196: is only searched for in the standard places. ! 197: See the ! 198: .B \-I ! 199: option above for more detail. ! 200: .PD ! 201: .TP ! 202: \fB#line\fI integer-constant "filename" ! 203: Causes ! 204: .I mc68cpp ! 205: to generate line control information for the next pass of the ! 206: C compiler. ! 207: .I Integer-constant ! 208: is the line number of the next line ! 209: and ! 210: .I filename ! 211: is the file where it comes from. ! 212: If \fI"filename"\fR is not given, the current file name is unchanged. ! 213: .TP ! 214: .B #endif ! 215: .br ! 216: Ends a section of lines begun by a test directive ! 217: .RB ( #if , ! 218: .BR #ifdef , ! 219: or ! 220: .BR #ifndef ). ! 221: Each test directive must have a matching ! 222: .BR #endif . ! 223: .bp ! 224: .TP ! 225: .BI #ifdef " name" ! 226: The lines following will appear in the output if, and only if, ! 227: .I name ! 228: has been the subject of a previous ! 229: .B #define ! 230: without being the subject of an intervening ! 231: .BR #undef . ! 232: .TP ! 233: .BI #ifndef " name" ! 234: The lines following will not appear in the output if, and only if, ! 235: .I name ! 236: has been the subject of a previous ! 237: .B #define ! 238: without being the subject of an intervening ! 239: .BR #undef . ! 240: .SK ! 241: .TP ! 242: .BI #if " constant-expression" ! 243: Lines following will appear in the output if, and only if, the ! 244: .I constant-expression ! 245: evaluates to non-zero. ! 246: All binary non-assignment C operators, the ! 247: .B ?: ! 248: operator, the unary ! 249: .BR \(mi , ! 250: .BR ! , ! 251: and ! 252: .B ~ ! 253: operators are all legal in ! 254: .IR constant-expression . ! 255: The precedence of the operators is the same as defined by the C language. ! 256: There is also a unary operator ! 257: .BR defined , ! 258: which can be used in ! 259: .I constant-expression ! 260: in these two forms: ! 261: .BI defined " " ( " name " ) ! 262: or ! 263: .BI defined " name" . ! 264: This allows the utility of ! 265: .BR #ifdef " and " #ifndef ! 266: in a ! 267: .B #if ! 268: directive. ! 269: Only these operators, integer constants, and names which ! 270: are known by ! 271: .I mc68cpp ! 272: should be used in ! 273: .IR constant-expression . ! 274: In particular, the ! 275: .B sizeof ! 276: operator is not available. ! 277: .TP ! 278: .B #else ! 279: Reverses the notion of the test directive which ! 280: matches this directive. So if lines previous to ! 281: this directive are ignored, the following lines ! 282: will appear in the output, ! 283: and vice versa. ! 284: .PP ! 285: The test directives and the possible ! 286: .B #else ! 287: directives can be nested. ! 288: .SH FILES ! 289: .TP 1.5i ! 290: /usr/include ! 291: standard directory for ! 292: .B #include ! 293: files ! 294: .SH SEE ALSO ! 295: .PP ! 296: dmdcc(1). ! 297: .br ! 298: m4(1) in the ! 299: \f2UNIX System V User's Reference Manual\f1. ! 300: .SH DIAGNOSTICS ! 301: .PP ! 302: The error messages produced by ! 303: .I mc68cpp\^ ! 304: are intended to be self-explanatory. The line number and filename ! 305: where the error occurred are printed along with the diagnostic. ! 306: .SH WARNING ! 307: When newline characters were found in argument lists for macros ! 308: to be expanded, previous versions of ! 309: .I mc68cpp\^ ! 310: put out the newlines as they were found and expanded. ! 311: The current version of ! 312: .I mc68cpp\^ ! 313: replaces these newlines with blanks to alleviate problems that the ! 314: previous versions had when this occurred.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.