home *** CD-ROM | disk | FTP | other *** search
-
-
-
- CCCCPPPPPPPP((((1111)))) CCCCPPPPPPPP((((1111))))
-
-
-
- NNNNAAAAMMMMEEEE
- cpp - the C language preprocessor
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- LIBDIR/cpp [ option | file ] ...
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- _c_p_p is a K&R C language preprocessor designed for standalone use and to
- be invoked as the first pass of all FORTRAN compilations and any K&R mode
- C compilation with the ----mmmmpppp option. Thus, _c_p_p'_s output is designed to be
- in a form acceptable as input to the next pass of the C compiler.
- Standalone use of _c_p_p on C code is not suggested, since the functionality
- of _c_p_p has been incorporated into the C front-end. See _m_4(1) for a more
- general macro processor.
-
- This is a K&R C language preprocessor, not an ISO/ANSI C language
- preprocessor: it is useful for those needing the old preprocessor. The ####
- operator, sometimes called the _s_t_r_i_n_g_i_z_e operator, is not recognized as
- such by _c_p_p. The ######## operator, sometimes called the _p_a_s_t_i_n_g operator, is
- not recognized as such by _c_p_p. And the ####eeeelllliiiiffff command is not recognized
- by _c_p_p. There are other differences between this and ISO/ANSI C
- preprocessors.
-
- _c_p_p optionally accepts any sequence of flags and input file names. The
- input files are processed in order; if no input file names are given, the
- standard input is used. The results of preprocessing the input file(s)
- are sent to the standard output.
-
- The following _o_p_t_i_o_n_s to _c_p_p are recognized:
-
-
- -PPPP Preprocess the input without producing the line control
- information used by the next pass of the C compiler.
-
- -CCCC By default, _c_p_p strips C-style comments. If the ----CCCC option is
- specified, all comments (except those found on _c_p_p directive
- lines) are passed along.
-
- -MMMM Run only the macro preprocessor on the named C programs,
- requesting it to generate Makefile dependencies and send the
- result to the standard output.
-
- -MMMMDDDDuuuuppppddddaaaatttteeee _f_i_l_e_n_a_m_e
- Similar to the ----MMMM option, but stores the resulting Makefile
- dependencies in _f_i_l_e_n_a_m_e rather than sending them to the standard
- output. _c_p_p with the ----MMMMDDDDuuuuppppddddaaaatttteeee option updates only the lines in
- _f_i_l_e_n_a_m_e that end with a distinctive make comment and begin with
- the target name (as described under the ----MMMMDDDDttttaaaarrrrggggeeeetttt option)
- followed by a colon.
-
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- CCCCPPPPPPPP((((1111)))) CCCCPPPPPPPP((((1111))))
-
-
-
- -MMMMDDDDttttaaaarrrrggggeeeetttt _n_a_m_e
- When the ----MMMMDDDDuuuuppppddddaaaatttteeee option has been used, this option causes _n_a_m_e
- to be used as the target name for the first source file. By
- default, the target name for a source file is the same as the
- source file name with a `.o' suffix.
-
- -UUUU_n_a_m_e Remove any initial definition of _n_a_m_e, where _n_a_m_e is a reserved
- symbol that is predefined by the particular preprocessor.
- Following is the current list of these possibly reserved symbols.
- The symbols ___E_D_G, _s_g_i, _u_n_i_x, and _m_i_p_s are always predefined by
- _c_p_p. The symbol ___E_X_T_E_N_S_I_O_N_S__ is predefined to indicate this is
- not an ANSI cpp and to allow extensions in ANSI C include files.
- The compiler drivers, _a_s(_1), _c_c(1), _C_C(1), _p_c(1), and _f_7_7(1)
- predefine many other symbols during preprocessing. See their
- respective man pages for complete lists of the symbols that they
- define.
-
-
- -DDDD_n_a_m_e
-
- -DDDD_n_a_m_e=_d_e_f
- Define _n_a_m_e with value _d_e_f as if by a ####ddddeeeeffffiiiinnnneeee. If no =_d_e_f is
- given, _n_a_m_e is defined with value 1. The ----DDDD option has lower
- precedence than the ----UUUU option. That is, if the same name is used
- in both a ----UUUU options and a ----DDDD option, the name will be undefined
- regardless of the order of the options.
-
- -IIII_d_i_r Change the algorithm for searching for ####iiiinnnncccclllluuuuddddeeee files whose names
- do not begin with / to look in _d_i_r before looking in the
- directories on the standard list. Thus ####iiiinnnncccclllluuuuddddeeee files whose
- names are enclosed in "" will be searched for first in the
- directory of the file with the ####iiiinnnncccclllluuuuddddeeee line, then in the
- directories named in ----IIII options, and last in directories on a
- standard list. For ####iiiinnnncccclllluuuuddddeeee files whose names are enclosed in
- <>, the directory of the file with the ####iiiinnnncccclllluuuuddddeeee line is not
- searched. If ----IIII is given with no _d_i_r, _c_p_p is instructed to
- suppress the search of the standard list of include directories.
- This standard list consists only of /_u_s_r/_i_n_c_l_u_d_e.
-
- -mmmmaaaaxxxx____rrrreeeecccc____ddddeeeepppptttthhhh====_n_u_m
- Set the maximum nesting depth of calls to a single macro to _n_u_m.
- The default value is 300.
-
- Four special names are understood by _c_p_p. The name ________LLLLIIIINNNNEEEE________ is defined
- as the current line number (as a decimal integer) as known by _c_p_p,
- ________FFFFIIIILLLLEEEE________ is defined as the current file name (as a C string) as known by
- _c_p_p, ________DDDDAAAATTTTEEEE________ is defined as a C string containing the current date
- (printed in the form "Dec 31 1999"), and ________TTTTIIIIMMMMEEEE________ is defined as a C
- string containing the current time in hh:mm:ss format. They can be used
- anywhere (including in macros) just as any other defined name.
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- CCCCPPPPPPPP((((1111)))) CCCCPPPPPPPP((((1111))))
-
-
-
- All _c_p_p directive lines start with #### in column 1. Any number of blanks
- and tabs are allowed between the #### and the directive. The directives
- are:
-
-
- ####ddddeeeeffffiiiinnnneeee _n_a_m_e _t_o_k_e_n-_s_t_r_i_n_g
- Replace subsequent instances of _n_a_m_e with _t_o_k_e_n-_s_t_r_i_n_g.
-
- ####ddddeeeeffffiiiinnnneeee _n_a_m_e( _a_r_g, ..., _a_r_g ) _t_o_k_e_n-_s_t_r_i_n_g
- Notice that there can be no space between _n_a_m_e and the (. Replace
- subsequent instances of _n_a_m_e followed by a (, a list of comma-
- separated sets of tokens, and a ) followed by _t_o_k_e_n-_s_t_r_i_n_g, where
- each occurrence of an _a_r_g in the _t_o_k_e_n-_s_t_r_i_n_g is replaced by the
- corresponding set of tokens in the comma-separated list. When a
- macro with arguments is expanded, the arguments are placed into the
- expanded _t_o_k_e_n-_s_t_r_i_n_g unchanged. After the entire _t_o_k_e_n-_s_t_r_i_n_g has
- been expanded, _c_p_p re-starts its scan for names to expand at the
- beginning of the newly created _t_o_k_e_n-_s_t_r_i_n_g.
-
- ####uuuunnnnddddeeeeffff _n_a_m_e
- Cause the definition of _n_a_m_e (if any) to be forgotten from now on.
- No additional tokens are permitted on the directive line after _n_a_m_e.
-
- ####iiiiddddeeeennnntttt "_s_t_r_i_n_g"
- The _s_t_r_i_n_g and the directive are silently swallowed. No output is
- produced for this directive.
-
- ####pppprrrraaaaggggmmmmaaaa
- The directive and whatever follows it on the line is passed to the
- output in a slightly modified form which is not documented. The
- form may change in a future release.
-
- ####pppprrrraaaaggggmmmmaaaa oooonnnncccceeee
- If this directive appears in an included file, the file will never
- be included again, even if there is another ####iiiinnnncccclllluuuuddddeeee of this file.
- No tokens or comments are permitted after the ``once'' keyword.
- Using ####pppprrrraaaaggggmmmmaaaa oooonnnncccceeee is more efficient than using macro wrappers,
- because the included file is not rescanned, but it may not be
- portable to third-party preprocessors.
-
- ####iiiinnnncccclllluuuuddddeeee "_f_i_l_e_n_a_m_e"
-
- ####iiiinnnncccclllluuuuddddeeee <_f_i_l_e_n_a_m_e>
- Include at this point the contents of _f_i_l_e_n_a_m_e (which will then be
- run through _c_p_p). When the <_f_i_l_e_n_a_m_e> notation is used, _f_i_l_e_n_a_m_e is
- only searched for in the standard places. See the ----IIII option above
- for more detail. No additional tokens are permitted on the
- directive line after the final " or >.
-
- ####lllliiiinnnneeee _i_n_t_e_g_e_r-_c_o_n_s_t_a_n_t _f_i_l_e_n_a_m_e
- Causes _c_p_p to generate line control information for the next pass of
- the C compiler. _I_n_t_e_g_e_r-_c_o_n_s_t_a_n_t is the line number of the next
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-
-
-
- CCCCPPPPPPPP((((1111)))) CCCCPPPPPPPP((((1111))))
-
-
-
- line and _f_i_l_e_n_a_m_e is the file from which it comes. If "_f_i_l_e_n_a_m_e" is
- not given, the current file name is unchanged. No additional tokens
- are premitted on the directive line after the optional _f_i_l_e_n_a_m_e.
-
- ####eeeennnnddddiiiiffff
- Ends a section of lines begun by a test directive (####iiiiffff,,,, ####iiiiffffddddeeeeffff, or
- ####iiiiffffnnnnddddeeeeffff). Each test directive must have a matching ####eeeennnnddddiiiiffff. No
- additional tokens are permitted on the directive line.
-
- ####iiiiffffddddeeeeffff _n_a_m_e
- The lines following will appear in the output if and only if _n_a_m_e
- has been the subject of a previous ####ddddeeeeffffiiiinnnneeee without being the subject
- of an intervening ####uuuunnnnddddeeeeffff. No additional tokens are permitted on the
- directive line after _n_a_m_e.
-
- ####iiiiffffnnnnddddeeeeffff _n_a_m_e
- The lines following will appear in the output if and only if _n_a_m_e
- has not been the subject of a previous ####ddddeeeeffffiiiinnnneeee. No additional
- tokens are permitted on the directive line after _n_a_m_e.
-
- ####iiiiffff _c_o_n_s_t_a_n_t-_e_x_p_r_e_s_s_i_o_n
- Lines following will appear in the output if and only if the
- _c_o_n_s_t_a_n_t-_e_x_p_r_e_s_s_i_o_n evaluates to non-zero. All binary non-
- assignment C operators, the ?: operator, the unary -, !, and ~
- operators are all legal in _c_o_n_s_t_a_n_t-_e_x_p_r_e_s_s_i_o_n. The precedence of
- the operators is the same as defined by the C language. There is
- also a unary operator ddddeeeeffffiiiinnnneeeedddd, which can be used in _c_o_n_s_t_a_n_t-
- _e_x_p_r_e_s_s_i_o_n in these two forms: ddddeeeeffffiiiinnnneeeedddd (((( _n_a_m_e )))) or ddddeeeeffffiiiinnnneeeedddd _n_a_m_e.
- This allows the utility of ####iiiiffffddddeeeeffff and ####iiiiffffnnnnddddeeeeffff in a ####iiiiffff directive.
- Only these operators, integer constants, and names which are known
- by _c_p_p should be used in _c_o_n_s_t_a_n_t-_e_x_p_r_e_s_s_i_o_n. In particular, the
- ssssiiiizzzzeeeeooooffff operator is not available.
-
- To test whether either of two symbols, _f_o_o and _f_u_m, are defined,
- use:
- #if defined(foo) || defined(fum)
-
- ####eeeellllsssseeee
- The lines following will appear in the output if and only if the
- preceding test directive evaluates to zero. No additional tokens
- are permitted on the directive line.
-
- The test directives and the possible ####eeeellllsssseeee directives can be nested.
-
- FFFFIIIILLLLEEEESSSS
- _I_N_C_D_I_R standard directory list for ####iiiinnnncccclllluuuuddddeeee files,
- /usr/include
-
- _L_I_B_D_I_R /usr/lib
-
-
-
-
-
-
- PPPPaaaaggggeeee 4444
-
-
-
-
-
-
- CCCCPPPPPPPP((((1111)))) CCCCPPPPPPPP((((1111))))
-
-
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- cc(1), line(1), m4(1), unifdef(1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 5555
-
-
-
-