ccpppp -- Command

C preprocessor
/lliibb/ccpppp [_o_p_t_i_o_n...] [_f_i_l_e...]

The command  ccpppp calls the  C preprocessor to perform  C preprocessing.  It
performs  the operations  described in  section 3.8  of the  ANSI Standard;
these  include   file  inclusion,  conditional   code  selection,  constant
definition, and  macro definition.   See the  entry on pprreepprroocceessssiinngg  for a
full description of C's preprocessing language.

Normally, ccpppp  is used to  preprocess C programs,  but it can be  used as a
simple macro processor for other types  of files as well.  For example, the
X utility iimmaakkee uses ccpppp to help build makefiles.

ccpppp reads each input _f_i_l_e,  processes directives, and writes its product on
ssttddoouutt.  If  the option  -EE is  not used, ccpppp  also writes into  its output
statements of the form #lliinnee_n _f_i_l_e_n_a_m_e, so the parser can connect its error
messages and debugger output with  the original line numbers in your source
files.

_O_p_t_i_o_n_s
ccpppp recognizes the following options:

-CC   Do not  suppress comments.  Normally,  ccpppp strips all  comments from C
     code before it invokes the parsing phase, cccc00.

-DD_V_A_R_I_A_B_L_E[=_v_a_l_u_e]
     Define _V_A_R_I_A_B_L_E for the preprocessor at compilation time.  If _v_a_l_u_e is
     not defined, _V_A_R_I_A_B_L_E is set to one.  For example, the command

         cc -DLIMIT=20 foo.c

     tells the preprocessor  to define the variable LLIIMMIITT to  be 20.  The C
     preprocessor  acts  as  though the  directive  #ddeeffiinnee  LLIIMMIITT 2200  were
     included in all source code.

-EE   Strip all  line-number information from the  source code.  This option
     is used  to preprocess assembly-language  files or other  sources, and
     should not be used with the other compiler phases.

-II_d_i_r_e_c_t_o_r_y
     C  allows two  types  of #iinncclluuddee  directives  in a  C program,  i.e.,
     #iinncclluuddee "ffiillee.hh"  and #iinncclluuddee <ffiillee.hh>.  The -II option  tells ccpppp to
     search  a specific  directory for  the  files you  have named  in your
     #iinncclluuddee directives,  in addition to the  directories that it searches
     by default.  You can have more  than one -II option on your ccpppp command
     line.

-oo _f_i_l_e
     Write  output into  _f_i_l_e. If  this option is  missing, ccpppp  writes its
     output onto ssttddoouutt, which may be redirected.

-PP   Strip all  file and line-number information from the  C code.  This is
     identical to the -EE option, defined above.

-QQ   Suppress all messages.

-UU_V_A_R_I_A_B_L_E
     Undefine  _V_A_R_I_A_B_L_E, as  if an  #uunnddeeff directive  were included  in the
     source  program.  This  is  used to  undefine the  variables that  ccpppp
     defines by default.

-VV   Print verbose messages.

-VVCCPPLLUUSS
     Suppress C++-style online comments.

ccpppp reads the environmental variables CCPPPPHHEEAADD and CCPPPPTTAAIILL and appends their
contents to, respectively, the beginning and the end of the ccpppp command.

_S_e_e _A_l_s_o
CC pprreepprroocceessssoorr, cccc, ccoommmmaannddss

_N_o_t_e_s
The COHERENT  C compiler uses a static buffer  space to expand preprocessor
macros.   Some  programs  that  make  especially  intensive use  of  the  C
processor's macro facility may die during compilation with the message

    macro expansion buffer overflow

This means that the program  has exhaused the compiler's ability to process
macros.  You may  wish to use an alternative preprocessor,  such as the one
that comes with ggcccc, as described below.

The COHERENT C compiler combines  the preprocessor ccpppp with the parser cccc00.
The file /lliibb/ccpppp is simply a  link to the C compiler /lliibb/cccc00. Thus, there
is no way to specify an alternative version of the preprocessor through the
cccc command.   You can get around, this however,  by linking the alternative
preprocessor  to a  file named  cccc00 in  a directory  other than  /lliibb, then
calling the alternative version via cccc. For example, to have ggcccc preprocess
program hhuuggeemmaaccrroo.cc, do  the following.  First, type the following commands
to link the ggcccc preprocess to a file named cccc00:

    su root
    cd /usr/local/lib/gcc-lib/i386-coh/2.3.2
    ln cpp cc0

Then, to preprocess and compile hhuuggeemmaaccrroo.cc, type the following:

    cc -t0 -B/usr/local/lib/gcc-lib/i386-coh/2.3.2 -E hugemacro.c > tmp.c
    cc tmp.c
    rm tmp.c

You may  wish to  embed the above  into your mmaakkeeffiillee,  or write it  into a
shell script.
