Annotation of researchv10dc/630/man/src/u_man/man1/mc68cpp.1, revision 1.1.1.1

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.

unix.superglobalmegacorp.com

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