home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 5
/
FreshFish_July-August1994.bin
/
bbs
/
gnu
/
gcc-2.5.8-bin.lha
/
man
/
cat1
/
cpp.0
< prev
next >
Wrap
Text File
|
1993-12-07
|
18KB
|
397 lines
cpp(1) GNU Tools cpp(1)
NNAAMMEE
cccp, cpp - The GNU C-Compatible Compiler Preprocessor.
SSYYNNOOPPSSIISS
ccccccpp [--$$] [--CC] [--DD_n_a_m_e[==_d_e_f_i_n_i_t_i_o_n]] [--ddDD] [--ddMM]
[--II _d_i_r_e_c_t_o_r_y] [--HH] [--II--] [--iimmaaccrrooss _f_i_l_e]
[--iinncclluuddee _f_i_l_e] [--llaanngg--cc] [--llaanngg--cc++++] [--llaanngg--oobbjjcc]
[--llaanngg--oobbjjcc++++] [--lliinntt] [--MM] [--MMDD] [--MMMM] [--MMMMDD]
[--nnoossttddiinncc] [--PP] [--ppeeddaannttiicc] [--ppeeddaannttiicc--eerrrroorrss]
[--ttrriiggrraapphhss] [--UU_n_a_m_e] [--uunnddeeff] [--WWttrriiggrraapphhss]
[--WWccoommmmeenntt] [--WWaallll] [--WWttrraaddiittiioonnaall]
[_i_n_f_i_l_e|--] [_o_u_t_f_i_l_e|--]
DDEESSCCRRIIPPTTIIOONN
The C preprocessor is a _m_a_c_r_o _p_r_o_c_e_s_s_o_r that is used auto-
matically by the C compiler to transform your program be-
fore actual compilation. It is called a macro processor
because it allows you to define _m_a_c_r_o_s, which are brief
abbreviations for longer constructs.
The C preprocessor provides four separate facilities that
you can use as you see fit:
o Inclusion of header files. These are files of dec-
larations that can be substituted into your pro-
gram.
o Macro expansion. You can define _m_a_c_r_o_s, which are
abbreviations for arbitrary fragments of C code,
and then the C preprocessor will replace the macros
with their definitions throughout the program.
o Conditional compilation. Using special preproces-
sor commands, you can include or exclude parts of
the program according to various conditions.
o Line control. If you use a program to combine or
rearrange source files into an intermediate file
which is then compiled, you can use line control to
inform the compiler of where each source line orig-
inally came from.
C preprocessors vary in some details. For a full explana-
tion of the GNU C preprocessor, see the iinnffoo file
`ccpppp..iinnffoo', or the manual _T_h_e _C _P_r_e_p_r_o_c_e_s_s_o_r. Both of
these are built from the same documentation source file,
`ccpppp..tteexxiinnffoo'. The GNU C preprocessor provides a superset
of the features of ANSI Standard C.
ANSI Standard C requires the rejection of many harmless
constructs commonly used by today's C programs. Such in-
compatibility would be inconvenient for users, so the GNU
C preprocessor is configured to accept these constructs by
default. Strictly speaking, to get ANSI Standard C, you
GNU Tools 2Jan1992 1
cpp(1) GNU Tools cpp(1)
must use the options `--ttrriiggrraapphhss', `--uunnddeeff' and
`--ppeeddaannttiicc', but in practice the consequences of having
strict ANSI Standard C make it undesirable to do this.
Most often when you use the C preprocessor you will not
have to invoke it explicitly: the C compiler will do so
automatically. However, the preprocessor is sometimes
useful individually.
When you call the preprocessor individually, either name
(ccpppp or ccccccpp) will do--they are completely synonymous.
The C preprocessor expects two file names as arguments,
_i_n_f_i_l_e and _o_u_t_f_i_l_e. The preprocessor reads _i_n_f_i_l_e togeth-
er with any other files it specifies with `##iinncclluuddee'. All
the output generated by the combined input files is writ-
ten in _o_u_t_f_i_l_e.
Either _i_n_f_i_l_e or _o_u_t_f_i_l_e may be `--', which as _i_n_f_i_l_e means
to read from standard input and as _o_u_t_f_i_l_e means to write
to standard output. Also, if _o_u_t_f_i_l_e or both file names
are omitted, the standard output and standard input are
used for the omitted file names.
OOPPTTIIOONNSS
Here is a table of command options accepted by the C pre-
processor. These options can also be given when compiling
a C program; they are passed along automatically to the
preprocessor when it is invoked by the compiler.
--PP Inhibit generation of `##'-lines with line-number
information in the output from the preprocessor.
This might be useful when running the preprocessor
on something that is not C code and will be sent to
a program which might be confused by the `##'-lines.
--CC Do not discard comments: pass them through to the
output file. Comments appearing in arguments of a
macro call will be copied to the output before the
expansion of the macro call.
--ttrriiggrraapphhss
Process ANSI standard trigraph sequences. These
are three-character sequences, all starting with
`????', that are defined by ANSI C to stand for sin-
gle characters. For example, `????//' stands for `\\',
so `''????//nn''' is a character constant for a newline.
Strictly speaking, the GNU C preprocessor does not
support all programs in ANSI Standard C unless
`--ttrriiggrraapphhss' is used, but if you ever notice the
difference it will be with relief.
You don't want to know any more about trigraphs.
GNU Tools 2Jan1992 2
cpp(1) GNU Tools cpp(1)
--ppeeddaannttiicc
Issue warnings required by the ANSI C standard in
certain cases such as when text other than a com-
ment follows `##eellssee' or `##eennddiiff'.
--ppeeddaannttiicc--eerrrroorrss
Like `--ppeeddaannttiicc', except that errors are produced
rather than warnings.
--WWttrriiggrraapphhss
Warn if any trigraphs are encountered (assuming
they are enabled).
--WWccoommmmeenntt
--WWccoommmmeennttss
Warn whenever a comment-start sequence `//**' appears
in a comment. (Both forms have the same effect).
--WWaallll Requests both `--WWttrriiggrraapphhss' and `--WWccoommmmeenntt' (but
not `--WWttrraaddiittiioonnaall').
--WWttrraaddiittiioonnaall
Warn about certain constructs that behave differ-
ently in traditional and ANSI C.
--II _d_i_r_e_c_t_o_r_y
Add the directory _d_i_r_e_c_t_o_r_y to the end of the list
of directories to be searched for header files.
This can be used to override a system header file,
substituting your own version, since these directo-
ries are searched before the system header file di-
rectories. If you use more than one `--II' option,
the directories are scanned in left-to-right order;
the standard system directories come after.
--I