Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ cpp(1) — sys5 — Apollo

Media Vault

Software Library

Restoration Projects

Artifacts Sought



CPP(1)          DOMAIN/IX Reference Manual (SYS5)          CPP(1)



NAME
     cpp - the C language preprocessor

USAGE
     /usr/lib/cpp [ option ... ] [ ifile [ ofile ] ]

DESCRIPTION
     Cpp is the C language preprocessor invoked as the first pass
     of any C compilation using the cc (1) command.  Thus, the
     output of cpp is in a form acceptable as input to the next
     pass of the C compiler.

     You should understand that, although cpp exists for
     DOMAIN/IX, Apollo's version of cc uses its own C preproces-
     sor. The DOMAIN C version of cpp may be invoked through the
     cc command.  Refer to the DOMAIN C Language Reference for
     more information.

     Cpp optionally accepts two filenames as arguments.  Ifile
     and ofile are respectively the input and output for the
     preprocessor.  They default to standard input and standard
     output if not supplied.

     Note:  When newline characters were found in argument lists
     for macros to be expanded, previous versions of cpp produced
     the new-lines as they were found and expanded.  The current
     version of the command replaces these newlines with blanks
     to alleviate problems that previous versions had when this
     occurred.

     Cpp understands two special names.  The name LINE is
     defined as the current line number (as a decimal integer) as
     known by cpp, and FILE is defined as the current
     filename (as a C string) as known by cpp. They can be used
     anywhere (including macros) just as any other defined name.

OPTIONS
     -P        Preprocess the input without producing the line
               control information used by the next pass of the C
               compiler.

     -C        Do not strip C-style comments (except those found
               on cpp directive lines).

     -Uname    Remove any initial definition of name, where name
               is a reserved symbol predefined by the particular
               preprocessor.  The current list of these possibly
               reserved symbols includes the following:

               operating system: ibm, gcos, os, tss, unix, aegis
               hardware: interdata, pdp11, u370, u3b, u3b5, vax,
               apollo



Printed 8/1/85                                              CPP-1





CPP(1)          DOMAIN/IX Reference Manual (SYS5)          CPP(1)



               UNIX system variant: RES, RT
               lint(1): lint

     -Dname
     -Dname=def
               Define name as if by a #define directive.  If no
               =def is given, define name as one (1).  This
               option has lower precedence than the -U option.
               That is, if the same name is used in both a -U
               option and a -D option, the name will be undefined
               regardless of the order of the options.

     -T        Use only the first eight characters for distin-
               guishing different preprocessor names.  This
               behavior is the same as previous preprocessors
               with respect to the length of names.  Included for
               backward compatibility.

     -Idir     Change the algorithm used to search for #include
               files with names not preceded by a slash (/) to
               look in dir before looking in the directories on
               the standard list.  Thus, #include files with
               names enclosed in double quotes (``'') will be
               searched for first in the directory of the file
               with the #include line, then in directories named
               in -I options, and last in directories on a stan-
               dard list.  For #include with names enclosed in
               <>, the directory of the file with the #include
               line is not searched.
DIRECTIVES
     All cpp directives start with lines beginning with a pound
     sign (#).  Any number of blanks and tabs are allowed between
     the pound sign and the directive.  The test directives and
     the possible #else directives can be nested.

     The valid directives are listed below.  In addition to
     these, the user may specify the following DOMAIN cpp direc-
     tives: #attribute, #debug, #eject, #nolist, #list, #module,
     #section, and #systype.  For a description of each of these,
     see the current revision of the DOMAIN C Language Reference.

     #define name token-string
          Replace subsequent instances of name with token-string.

     #define name( arg, ..., arg ) token-string
          Note that there can be no space between name and the
          left parenthesis.  Replace subsequent instances of name
          followed by a left parenthesis, a list of comma-
          separated set of tokens, and a right parenthesis by
          token-string, where each occurrence of an arg in the
          token-string is replaced by the corresponding set of
          tokens in the comma-separated list.  When a macro with



CPP-2                                              Printed 8/1/85





CPP(1)          DOMAIN/IX Reference Manual (SYS5)          CPP(1)



          arguments is expanded, the arguments are placed into
          the expanded token-string unchanged.  After the entire
          token-string has been expanded, cpp restarts its scan
          for names to expand at the beginning of the newly-
          created token-string.

     #undef name
          Forget the definition of name (if any) from now on.

     #include ``filename''
     #include <filename>
          Include, at this point, the contents of filename (which
          will then be run through cpp).  When the <filename>
          notation is used, filename is only searched for in the
          standard places.  See the -I option above for more
          detail.

     #line integer-constant ``filename''
          Generate line control information for the next pass of
          the C compiler.  Integer-constant is the line number of
          the next line and filename is the file from which it is
          derived.  If ``filename'' is not given, the current
          filename is unchanged.

     #endif
          End a section of lines started by a test directive
          (#if, #ifdef, or #ifndef).  Each test directive must
          have a matching #endif.

     #ifdef name
          Include the lines following in the output only if name
          has been the subject of a previous #define without
          being the subject of an intervening #undef.

     #ifndef name
          Do not include the lines following in the output only
          if name has been the subject of a previous #define
          without being the subject of an intervening #undef.

     #if constant-expression
          Include the lines following in the output only if the
          constant-expression evaluates to non-zero.  All binary
          non-assignment C operators, the ?: operator, the unary
          -, !, and ~ operators are legal in constant-expression.
          The precedence of the operators is the same as defined
          by the C language.  There is also a unary operator
          defined, which can be used in constant-expression in
          these two forms: defined ( name ) or defined name.
          This allows the utility of #ifdef and #ifndef in a #if
          directive.  Only those operators, integer constants,
          and names known by cpp should be used in constant-
          expression.  In particular, the sizeof operator is not



Printed 8/1/85                                              CPP-3





CPP(1)          DOMAIN/IX Reference Manual (SYS5)          CPP(1)



          available.

     #else
          Reverse the notion of the test directive that matches
          this directive.  If lines previous to this directive
          are ignored, the following lines will appear in the
          output (and vice versa).

FILES
     /usr/include   standard directory for #include files

DIAGNOSTICS
     The error messages produced by cpp are intended to be self-
     explanatory.  The line number and filename where the error
     occurred are printed along with the diagnostic.

RELATED INFORMATION
     cc (1), m4 (1).





































CPP-4                                              Printed 8/1/85



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026