+++ /dev/null
-This is doc/cpp.info, produced by makeinfo version 4.5 from
-doc/cpp.texi.
-
-INFO-DIR-SECTION Programming
-START-INFO-DIR-ENTRY
-* Cpp: (cpp). The GNU C preprocessor.
-END-INFO-DIR-ENTRY
-
-\1f
-File: cpp.info, Node: Invocation, Next: Environment Variables, Prev: Implementation Details, Up: Top
-
-Invocation
-**********
-
- 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 on its own. All the
-options listed here are also acceptable to the C compiler and have the
-same meaning, except that the C compiler has different rules for
-specifying the output file.
-
- *Note:* Whether you use the preprocessor by way of `gcc' or `cpp',
-the "compiler driver" is run first. This program's purpose is to
-translate your command into invocations of the programs that do the
-actual work. Their command line interfaces are similar but not
-identical to the documented interface, and may change without notice.
-
- The C preprocessor expects two file names as arguments, INFILE and
-OUTFILE. The preprocessor reads INFILE together with any other files
-it specifies with `#include'. All the output generated by the combined
-input files is written in OUTFILE.
-
- Either INFILE or OUTFILE may be `-', which as INFILE means to read
-from standard input and as OUTFILE means to write to standard output.
-Also, if either file is omitted, it means the same as if `-' had been
-specified for that file.
-
- Unless otherwise noted, or the option ends in `=', all options which
-take an argument may have that argument appear either immediately after
-the option, or with a space between option and argument: `-Ifoo' and
-`-I foo' have the same effect.
-
- Many options have multi-letter names; therefore multiple
-single-letter options may _not_ be grouped: `-dM' is very different from
-`-d -M'.
-
-`-D NAME'
- Predefine NAME as a macro, with definition `1'.
-
-`-D NAME=DEFINITION'
- Predefine NAME as a macro, with definition DEFINITION. There are
- no restrictions on the contents of DEFINITION, but if you are
- invoking the preprocessor from a shell or shell-like program you
- may need to use the shell's quoting syntax to protect characters
- such as spaces that have a meaning in the shell syntax.
-
- If you wish to define a function-like macro on the command line,
- write its argument list with surrounding parentheses before the
- equals sign (if any). Parentheses are meaningful to most shells,
- so you will need to quote the option. With `sh' and `csh',
- `-D'NAME(ARGS...)=DEFINITION'' works.
-
- `-D' and `-U' options are processed in the order they are given on
- the command line. All `-imacros FILE' and `-include FILE' options
- are processed after all `-D' and `-U' options.
-
-`-U NAME'
- Cancel any previous definition of NAME, either built in or
- provided with a `-D' option.
-
-`-undef'
- Do not predefine any system-specific macros. The common predefined
- macros remain defined.
-
-`-I DIR'
- Add the directory DIR to the list of directories to be searched
- for header files. *Note Search Path::. Directories named by `-I'
- are searched before the standard system include directories.
-
- It is dangerous to specify a standard system include directory in
- an `-I' option. This defeats the special treatment of system
- headers (*note System Headers::) . It can also defeat the repairs
- to buggy system headers which GCC makes when it is installed.
-
-`-o FILE'
- Write output to FILE. This is the same as specifying FILE as the
- second non-option argument to `cpp'. `gcc' has a different
- interpretation of a second non-option argument, so you must use
- `-o' to specify the output file.
-
-`-Wall'
- Turns on all optional warnings which are desirable for normal
- code. At present this is `-Wcomment' and `-Wtrigraphs'. Note that
- many of the preprocessor's warnings are on by default and have no
- options to control them.
-
-`-Wcomment'
-`-Wcomments'
- Warn whenever a comment-start sequence `/*' appears in a `/*'
- comment, or whenever a backslash-newline appears in a `//' comment.
- (Both forms have the same effect.)
-
-`-Wtrigraphs'
- Warn if any trigraphs are encountered. This option used to take
- effect only if `-trigraphs' was also specified, but now works
- independently. Warnings are not given for trigraphs within
- comments, as they do not affect the meaning of the program.
-
-`-Wtraditional'
- Warn about certain constructs that behave differently in
- traditional and ISO C. Also warn about ISO C constructs that have
- no traditional C equivalent, and problematic constructs which
- should be avoided. *Note Traditional Mode::.
-
-`-Wimport'
- Warn the first time `#import' is used.
-
-`-Wundef'
- Warn whenever an identifier which is not a macro is encountered in
- an `#if' directive, outside of `defined'. Such identifiers are
- replaced with zero.
-
-`-Werror'
- Make all warnings into hard errors. Source code which triggers
- warnings will be rejected.
-
-`-Wsystem-headers'
- Issue warnings for code in system headers. These are normally
- unhelpful in finding bugs in your own code, therefore suppressed.
- If you are responsible for the system library, you may want to see
- them.
-
-`-w'
- Suppress all warnings, including those which GNU CPP issues by
- default.
-
-`-pedantic'
- Issue all the mandatory diagnostics listed in the C standard.
- Some of them are left out by default, since they trigger
- frequently on harmless code.
-
-`-pedantic-errors'
- Issue all the mandatory diagnostics, and make all mandatory
- diagnostics into errors. This includes mandatory diagnostics that
- GCC issues without `-pedantic' but treats as warnings.
-
-`-M'
- Instead of outputting the result of preprocessing, output a rule
- suitable for `make' describing the dependencies of the main source
- file. The preprocessor outputs one `make' rule containing the
- object file name for that source file, a colon, and the names of
- all the included files, including those coming from `-include' or
- `-imacros' command line options.
-
- Unless specified explicitly (with `-MT' or `-MQ'), the object file
- name consists of the basename of the source file with any suffix
- replaced with object file suffix. If there are many included
- files then the rule is split into several lines using `\'-newline.
- The rule has no commands.
-
- This option does not suppress the preprocessor's debug output,
- such as `-dM'. To avoid mixing such debug output with the
- dependency rules you should explicitly specify the dependency
- output file with `-MF', or use an environment variable like
- `DEPENDENCIES_OUTPUT' (*note DEPENDENCIES_OUTPUT::). Debug output
- will still be sent to the regular output stream as normal.
-
- Passing `-M' to the driver implies `-E'.
-
-`-MM'
- Like `-M' but do not mention header files that are found in system
- header directories, nor header files that are included, directly
- or indirectly, from such a header.
-
- This implies that the choice of angle brackets or double quotes in
- an `#include' directive does not in itself determine whether that
- header will appear in `-MM' dependency output. This is a slight
- change in semantics from GCC versions 3.0 and earlier.
-
-`-MF FILE'
- When used with `-M' or `-MM', specifies a file to write the
- dependencies to. If no `-MF' switch is given the preprocessor
- sends the rules to the same place it would have sent preprocessed
- output.
-
- When used with the driver options `-MD' or `-MMD', `-MF' overrides
- the default dependency output file.
-
-`-MG'
- When used with `-M' or `-MM', `-MG' says to treat missing header
- files as generated files and assume they live in the same
- directory as the source file. It suppresses preprocessed output,
- as a missing header file is ordinarily an error.
-
- This feature is used in automatic updating of makefiles.
-
-`-MP'
- This option instructs CPP to add a phony target for each dependency
- other than the main file, causing each to depend on nothing. These
- dummy rules work around errors `make' gives if you remove header
- files without updating the `Makefile' to match.
-
- This is typical output:
-
- test.o: test.c test.h
-
- test.h:
-
-`-MT TARGET'
- Change the target of the rule emitted by dependency generation. By
- default CPP takes the name of the main input file, including any
- path, deletes any file suffix such as `.c', and appends the
- platform's usual object suffix. The result is the target.
-
- An `-MT' option will set the target to be exactly the string you
- specify. If you want multiple targets, you can specify them as a
- single argument to `-MT', or use multiple `-MT' options.
-
- For example, `-MT '$(objpfx)foo.o'' might give
-
- $(objpfx)foo.o: foo.c
-
-`-MQ TARGET'
- Same as `-MT', but it quotes any characters which are special to
- Make. `-MQ '$(objpfx)foo.o'' gives
-
- $$(objpfx)foo.o: foo.c
-
- The default target is automatically quoted, as if it were given
- with `-MQ'.
-
-`-MD'
- `-MD' is equivalent to `-M -MF FILE', except that `-E' is not
- implied. The driver determines FILE based on whether an `-o'
- option is given. If it is, the driver uses its argument but with
- a suffix of `.d', otherwise it take the basename of the input file
- and applies a `.d' suffix.
-
- If `-MD' is used in conjunction with `-E', any `-o' switch is
- understood to specify the dependency output file (but *note
- -MF::), but if used without `-E', each `-o' is understood to
- specify a target object file.
-
- Since `-E' is not implied, `-MD' can be used to generate a
- dependency output file as a side-effect of the compilation process.
-
-`-MMD'
- Like `-MD' except mention only user header files, not system
- -header files.
-
-`-x c'
-`-x c++'
-`-x objective-c'
-`-x assembler-with-cpp'
- Specify the source language: C, C++, Objective-C, or assembly.
- This has nothing to do with standards conformance or extensions;
- it merely selects which base syntax to expect. If you give none
- of these options, cpp will deduce the language from the extension
- of the source file: `.c', `.cc', `.m', or `.S'. Some other common
- extensions for C++ and assembly are also recognized. If cpp does
- not recognize the extension, it will treat the file as C; this is
- the most generic mode.
-
- *Note:* Previous versions of cpp accepted a `-lang' option which
- selected both the language and the standards conformance level.
- This option has been removed, because it conflicts with the `-l'
- option.
-
-`-std=STANDARD'
-`-ansi'
- Specify the standard to which the code should conform. Currently
- cpp only knows about the standards for C; other language standards
- will be added in the future.
-
- STANDARD may be one of:
- `iso9899:1990'
- `c89'
- The ISO C standard from 1990. `c89' is the customary
- shorthand for this version of the standard.
-
- The `-ansi' option is equivalent to `-std=c89'.
-
- `iso9899:199409'
- The 1990 C standard, as amended in 1994.
-
- `iso9899:1999'
- `c99'
- `iso9899:199x'
- `c9x'
- The revised ISO C standard, published in December 1999.
- Before publication, this was known as C9X.
-
- `gnu89'
- The 1990 C standard plus GNU extensions. This is the default.
-
- `gnu99'
- `gnu9x'
- The 1999 C standard plus GNU extensions.
-
-`-I-'
- Split the include path. Any directories specified with `-I'
- options before `-I-' are searched only for headers requested with
- `#include "FILE"'; they are not searched for `#include <FILE>'.
- If additional directories are specified with `-I' options after
- the `-I-', those directories are searched for all `#include'
- directives.
-
- In addition, `-I-' inhibits the use of the directory of the current
- file directory as the first search directory for `#include "FILE"'.
- *Note Search Path::.
-
-`-nostdinc'
- Do not search the standard system directories for header files.
- Only the directories you have specified with `-I' options (and the
- directory of the current file, if appropriate) are searched.
-
-`-nostdinc++'
- Do not search for header files in the C++-specific standard
- directories, but do still search the other standard directories.
- (This option is used when building the C++ library.)
-
-`-include FILE'
- Process FILE as if `#include "file"' appeared as the first line of
- the primary source file. However, the first directory searched
- for FILE is the preprocessor's working directory _instead of_ the
- directory containing the main source file. If not found there, it
- is searched for in the remainder of the `#include "..."' search
- chain as normal.
-
- If multiple `-include' options are given, the files are included
- in the order they appear on the command line.
-
-`-imacros FILE'
- Exactly like `-include', except that any output produced by
- scanning FILE is thrown away. Macros it defines remain defined.
- This allows you to acquire all the macros from a header without
- also processing its declarations.
-
- All files specified by `-imacros' are processed before all files
- specified by `-include'.
-
-`-idirafter DIR'
- Search DIR for header files, but do it _after_ all directories
- specified with `-I' and the standard system directories have been
- exhausted. DIR is treated as a system include directory.
-
-`-iprefix PREFIX'
- Specify PREFIX as the prefix for subsequent `-iwithprefix'
- options. If the prefix represents a directory, you should include
- the final `/'.
-
-`-iwithprefix DIR'
-`-iwithprefixbefore DIR'
- Append DIR to the prefix specified previously with `-iprefix', and
- add the resulting directory to the include search path.
- `-iwithprefixbefore' puts it in the same place `-I' would;
- `-iwithprefix' puts it where `-idirafter' would.
-
- Use of these options is discouraged.
-
-`-isystem DIR'
- Search DIR for header files, after all directories specified by
- `-I' but before the standard system directories. Mark it as a
- system directory, so that it gets the same special treatment as is
- applied to the standard system directories. *Note System
- Headers::.
-
-`-fpreprocessed'
- Indicate to the preprocessor that the input file has already been
- preprocessed. This suppresses things like macro expansion,
- trigraph conversion, escaped newline splicing, and processing of
- most directives. The preprocessor still recognizes and removes
- comments, so that you can pass a file preprocessed with `-C' to
- the compiler without problems. In this mode the integrated
- preprocessor is little more than a tokenizer for the front ends.
-
- `-fpreprocessed' is implicit if the input file has one of the
- extensions `.i', `.ii' or `.mi'. These are the extensions that
- GCC uses for preprocessed files created by `-save-temps'.
-
-`-ftabstop=WIDTH'
- Set the distance between tab stops. This helps the preprocessor
- report correct column numbers in warnings or errors, even if tabs
- appear on the line. If the value is less than 1 or greater than
- 100, the option is ignored. The default is 8.
-
-`-fno-show-column'
- Do not print column numbers in diagnostics. This may be necessary
- if diagnostics are being scanned by a program that does not
- understand the column numbers, such as `dejagnu'.
-
-`-A PREDICATE=ANSWER'
- Make an assertion with the predicate PREDICATE and answer ANSWER.
- This form is preferred to the older form `-A PREDICATE(ANSWER)',
- which is still supported, because it does not use shell special
- characters. *Note Assertions::.
-
-`-A -PREDICATE=ANSWER'
- Cancel an assertion with the predicate PREDICATE and answer ANSWER.
-
-`-A-'
- Cancel all predefined assertions and all assertions preceding it on
- the command line. Also, undefine all predefined macros and all
- macros preceding it on the command line. (This is a historical
- wart and may change in the future.)
-
-`-dCHARS'
- CHARS is a sequence of one or more of the following characters,
- and must not be preceded by a space. Other characters are
- interpreted by the compiler proper, or reserved for future
- versions of GCC, and so are silently ignored. If you specify
- characters whose behavior conflicts, the result is undefined.
-
- `M'
- Instead of the normal output, generate a list of `#define'
- directives for all the macros defined during the execution of
- the preprocessor, including predefined macros. This gives
- you a way of finding out what is predefined in your version
- of the preprocessor. Assuming you have no file `foo.h', the
- command
-
- touch foo.h; cpp -dM foo.h
-
- will show all the predefined macros.
-
- `D'
- Like `M' except in two respects: it does _not_ include the
- predefined macros, and it outputs _both_ the `#define'
- directives and the result of preprocessing. Both kinds of
- output go to the standard output file.
-
- `N'
- Like `D', but emit only the macro names, not their expansions.
-
- `I'
- Output `#include' directives in addition to the result of
- preprocessing.
-
-`-P'
- Inhibit generation of linemarkers 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 linemarkers. *Note Preprocessor
- Output::.
-
-`-C'
- Do not discard comments. All comments are passed through to the
- output file, except for comments in processed directives, which
- are deleted along with the directive.
-
- You should be prepared for side effects when using `-C'; it causes
- the preprocessor to treat comments as tokens in their own right.
- For example, comments appearing at the start of what would be a
- directive line have the effect of turning that line into an
- ordinary source line, since the first token on the line is no
- longer a `#'.
-
-`-gcc'
- Define the macros __GNUC__, __GNUC_MINOR__ and
- __GNUC_PATCHLEVEL__. These are defined automatically when you use
- `gcc -E'; you can turn them off in that case with `-no-gcc'.
-
-`-traditional'
- Try to imitate the behavior of old-fashioned C, as opposed to ISO
- C. *Note Traditional Mode::.
-
-`-trigraphs'
- Process trigraph sequences. *Note Initial processing::.
-
-`-remap'
- Enable special code to work around file systems which only permit
- very short file names, such as MS-DOS.
-
-`-$'
- Forbid the use of `$' in identifiers. The C standard allows
- implementations to define extra characters that can appear in
- identifiers. By default GNU CPP permits `$', a common extension.
-
-`-h'
-`--help'
-`--target-help'
- Print text describing all the command line options instead of
- preprocessing anything.
-
-`-v'
- Verbose mode. Print out GNU CPP's version number at the beginning
- of execution, and report the final form of the include path.
-
-`-H'
- Print the name of each header file used, in addition to other
- normal activities. Each name is indented to show how deep in the
- `#include' stack it is.
-
-`-version'
-`--version'
- Print out GNU CPP's version number. With one dash, proceed to
- preprocess as normal. With two dashes, exit immediately.
-
-\1f
-File: cpp.info, Node: Environment Variables, Next: GNU Free Documentation License, Prev: Invocation, Up: Top
-
-Environment Variables
-*********************
-
- This section describes the environment variables that affect how CPP
-operates. You can use them to specify directories or prefixes to use
-when searching for include files, or to control dependency output.
-
- Note that you can also specify places to search using options such as
-`-I', and control dependency output with options like `-M' (*note
-Invocation::). These take precedence over environment variables, which
-in turn take precedence over the configuration of GCC.
-
-`CPATH'
-`C_INCLUDE_PATH'
-`CPLUS_INCLUDE_PATH'
-`OBJC_INCLUDE_PATH'
- Each variable's value is a list of directories separated by a
- special character, much like `PATH', in which to look for header
- files. The special character, `PATH_SEPARATOR', is
- target-dependent and determined at GCC build time. For
- Windows-based targets it is a semicolon, and for almost all other
- targets it is a colon.
-
- `CPATH' specifies a list of directories to be searched as if
- specified with `-I', but after any paths given with `-I' options
- on the command line. The environment variable is used regardless
- of which language is being preprocessed.
-
- The remaining environment variables apply only when preprocessing
- the particular language indicated. Each specifies a list of
- directories to be searched as if specified with `-isystem', but
- after any paths given with `-isystem' options on the command line.
-
- See also *Note Search Path::.
-
-`DEPENDENCIES_OUTPUT'
- If this variable is set, its value specifies how to output
- dependencies for Make based on the non-system header files
- processed by the compiler. System header files are ignored in the
- dependency output.
-
- The value of `DEPENDENCIES_OUTPUT' can be just a file name, in
- which case the Make rules are written to that file, guessing the
- target name from the source file name. Or the value can have the
- form `FILE TARGET', in which case the rules are written to file
- FILE using TARGET as the target name.
-
- In other words, this environment variable is equivalent to
- combining the options `-MM' and `-MF' (*note Invocation::), with
- an optional `-MT' switch too.
-
-`SUNPRO_DEPENDENCIES'
- This variable is the same as the environment variable
- `DEPENDENCIES_OUTPUT' (*note DEPENDENCIES_OUTPUT::), except that
- system header files are not ignored, so it implies `-M' rather
- than `-MM'. However, the dependence on the main input file is
- omitted. *Note Invocation::.
-
-\1f
-File: cpp.info, Node: GNU Free Documentation License, Next: Option Index, Prev: Environment Variables, Up: Top
-
-GNU Free Documentation License
-******************************
-
- Version 1.1, March 2000
- Copyright (C) 2000 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- 0. PREAMBLE
-
- The purpose of this License is to make a manual, textbook, or other
- written document "free" in the sense of freedom: to assure everyone
- the effective freedom to copy and redistribute it, with or without
- modifying it, either commercially or noncommercially. Secondarily,
- this License preserves for the author and publisher a way to get
- credit for their work, while not being considered responsible for
- modifications made by others.
-
- This License is a kind of "copyleft", which means that derivative
- works of the document must themselves be free in the same sense.
- It complements the GNU General Public License, which is a copyleft
- license designed for free software.
-
- We have designed this License in order to use it for manuals for
- free software, because free software needs free documentation: a
- free program should come with manuals providing the same freedoms
- that the software does. But this License is not limited to
- software manuals; it can be used for any textual work, regardless
- of subject matter or whether it is published as a printed book.
- We recommend this License principally for works whose purpose is
- instruction or reference.
-
- 1. APPLICABILITY AND DEFINITIONS
-
- This License applies to any manual or other work that contains a
- notice placed by the copyright holder saying it can be distributed
- under the terms of this License. The "Document", below, refers to
- any such manual or work. Any member of the public is a licensee,
- and is addressed as "you".
-
- A "Modified Version" of the Document means any work containing the
- Document or a portion of it, either copied verbatim, or with
- modifications and/or translated into another language.
-
- A "Secondary Section" is a named appendix or a front-matter
- section of the Document that deals exclusively with the
- relationship of the publishers or authors of the Document to the
- Document's overall subject (or to related matters) and contains
- nothing that could fall directly within that overall subject.
- (For example, if the Document is in part a textbook of
- mathematics, a Secondary Section may not explain any mathematics.)
- The relationship could be a matter of historical connection with
- the subject or with related matters, or of legal, commercial,
- philosophical, ethical or political position regarding them.
-
- The "Invariant Sections" are certain Secondary Sections whose
- titles are designated, as being those of Invariant Sections, in
- the notice that says that the Document is released under this
- License.
-
- The "Cover Texts" are certain short passages of text that are
- listed, as Front-Cover Texts or Back-Cover Texts, in the notice
- that says that the Document is released under this License.
-
- A "Transparent" copy of the Document means a machine-readable copy,
- represented in a format whose specification is available to the
- general public, whose contents can be viewed and edited directly
- and straightforwardly with generic text editors or (for images
- composed of pixels) generic paint programs or (for drawings) some
- widely available drawing editor, and that is suitable for input to
- text formatters or for automatic translation to a variety of
- formats suitable for input to text formatters. A copy made in an
- otherwise Transparent file format whose markup has been designed
- to thwart or discourage subsequent modification by readers is not
- Transparent. A copy that is not "Transparent" is called "Opaque".
-
- Examples of suitable formats for Transparent copies include plain
- ASCII without markup, Texinfo input format, LaTeX input format,
- SGML or XML using a publicly available DTD, and
- standard-conforming simple HTML designed for human modification.
- Opaque formats include PostScript, PDF, proprietary formats that
- can be read and edited only by proprietary word processors, SGML
- or XML for which the DTD and/or processing tools are not generally
- available, and the machine-generated HTML produced by some word
- processors for output purposes only.
-
- The "Title Page" means, for a printed book, the title page itself,
- plus such following pages as are needed to hold, legibly, the
- material this License requires to appear in the title page. For
- works in formats which do not have any title page as such, "Title
- Page" means the text near the most prominent appearance of the
- work's title, preceding the beginning of the body of the text.
-
- 2. VERBATIM COPYING
-
- You may copy and distribute the Document in any medium, either
- commercially or noncommercially, provided that this License, the
- copyright notices, and the license notice saying this License
- applies to the Document are reproduced in all copies, and that you
- add no other conditions whatsoever to those of this License. You
- may not use technical measures to obstruct or control the reading
- or further copying of the copies you make or distribute. However,
- you may accept compensation in exchange for copies. If you
- distribute a large enough number of copies you must also follow
- the conditions in section 3.
-
- You may also lend copies, under the same conditions stated above,
- and you may publicly display copies.
-
- 3. COPYING IN QUANTITY
-
- If you publish printed copies of the Document numbering more than
- 100, and the Document's license notice requires Cover Texts, you
- must enclose the copies in covers that carry, clearly and legibly,
- all these Cover Texts: Front-Cover Texts on the front cover, and
- Back-Cover Texts on the back cover. Both covers must also clearly
- and legibly identify you as the publisher of these copies. The
- front cover must present the full title with all words of the
- title equally prominent and visible. You may add other material
- on the covers in addition. Copying with changes limited to the
- covers, as long as they preserve the title of the Document and
- satisfy these conditions, can be treated as verbatim copying in
- other respects.
-
- If the required texts for either cover are too voluminous to fit
- legibly, you should put the first ones listed (as many as fit
- reasonably) on the actual cover, and continue the rest onto
- adjacent pages.
-
- If you publish or distribute Opaque copies of the Document
- numbering more than 100, you must either include a
- machine-readable Transparent copy along with each Opaque copy, or
- state in or with each Opaque copy a publicly-accessible
- computer-network location containing a complete Transparent copy
- of the Document, free of added material, which the general
- network-using public has access to download anonymously at no
- charge using public-standard network protocols. If you use the
- latter option, you must take reasonably prudent steps, when you
- begin distribution of Opaque copies in quantity, to ensure that
- this Transparent copy will remain thus accessible at the stated
- location until at least one year after the last time you
- distribute an Opaque copy (directly or through your agents or
- retailers) of that edition to the public.
-
- It is requested, but not required, that you contact the authors of
- the Document well before redistributing any large number of
- copies, to give them a chance to provide you with an updated
- version of the Document.
-
- 4. MODIFICATIONS
-
- You may copy and distribute a Modified Version of the Document
- under the conditions of sections 2 and 3 above, provided that you
- release the Modified Version under precisely this License, with
- the Modified Version filling the role of the Document, thus
- licensing distribution and modification of the Modified Version to
- whoever possesses a copy of it. In addition, you must do these
- things in the Modified Version:
-
- A. Use in the Title Page (and on the covers, if any) a title
- distinct from that of the Document, and from those of
- previous versions (which should, if there were any, be listed
- in the History section of the Document). You may use the
- same title as a previous version if the original publisher of
- that version gives permission.
-
- B. List on the Title Page, as authors, one or more persons or
- entities responsible for authorship of the modifications in
- the Modified Version, together with at least five of the
- principal authors of the Document (all of its principal
- authors, if it has less than five).
-
- C. State on the Title page the name of the publisher of the
- Modified Version, as the publisher.
-
- D. Preserve all the copyright notices of the Document.
-
- E. Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
-
- F. Include, immediately after the copyright notices, a license
- notice giving the public permission to use the Modified
- Version under the terms of this License, in the form shown in
- the Addendum below.
-
- G. Preserve in that license notice the full lists of Invariant
- Sections and required Cover Texts given in the Document's
- license notice.
-
- H. Include an unaltered copy of this License.
-
- I. Preserve the section entitled "History", and its title, and
- add to it an item stating at least the title, year, new
- authors, and publisher of the Modified Version as given on
- the Title Page. If there is no section entitled "History" in
- the Document, create one stating the title, year, authors,
- and publisher of the Document as given on its Title Page,
- then add an item describing the Modified Version as stated in
- the previous sentence.
-
- J. Preserve the network location, if any, given in the Document
- for public access to a Transparent copy of the Document, and
- likewise the network locations given in the Document for
- previous versions it was based on. These may be placed in
- the "History" section. You may omit a network location for a
- work that was published at least four years before the
- Document itself, or if the original publisher of the version
- it refers to gives permission.
-
- K. In any section entitled "Acknowledgments" or "Dedications",
- preserve the section's title, and preserve in the section all
- the substance and tone of each of the contributor
- acknowledgments and/or dedications given therein.
-
- L. Preserve all the Invariant Sections of the Document,
- unaltered in their text and in their titles. Section numbers
- or the equivalent are not considered part of the section
- titles.
-
- M. Delete any section entitled "Endorsements". Such a section
- may not be included in the Modified Version.
-
- N. Do not retitle any existing section as "Endorsements" or to
- conflict in title with any Invariant Section.
-
- If the Modified Version includes new front-matter sections or
- appendices that qualify as Secondary Sections and contain no
- material copied from the Document, you may at your option
- designate some or all of these sections as invariant. To do this,
- add their titles to the list of Invariant Sections in the Modified
- Version's license notice. These titles must be distinct from any
- other section titles.
-
- You may add a section entitled "Endorsements", provided it contains
- nothing but endorsements of your Modified Version by various
- parties--for example, statements of peer review or that the text
- has been approved by an organization as the authoritative
- definition of a standard.
-
- You may add a passage of up to five words as a Front-Cover Text,
- and a passage of up to 25 words as a Back-Cover Text, to the end
- of the list of Cover Texts in the Modified Version. Only one
- passage of Front-Cover Text and one of Back-Cover Text may be
- added by (or through arrangements made by) any one entity. If the
- Document already includes a cover text for the same cover,
- previously added by you or by arrangement made by the same entity
- you are acting on behalf of, you may not add another; but you may
- replace the old one, on explicit permission from the previous
- publisher that added the old one.
-
- The author(s) and publisher(s) of the Document do not by this
- License give permission to use their names for publicity for or to
- assert or imply endorsement of any Modified Version.
-
- 5. COMBINING DOCUMENTS
-
- You may combine the Document with other documents released under
- this License, under the terms defined in section 4 above for
- modified versions, provided that you include in the combination
- all of the Invariant Sections of all of the original documents,
- unmodified, and list them all as Invariant Sections of your
- combined work in its license notice.
-
- The combined work need only contain one copy of this License, and
- multiple identical Invariant Sections may be replaced with a single
- copy. If there are multiple Invariant Sections with the same name
- but different contents, make the title of each such section unique
- by adding at the end of it, in parentheses, the name of the
- original author or publisher of that section if known, or else a
- unique number. Make the same adjustment to the section titles in
- the list of Invariant Sections in the license notice of the
- combined work.
-
- In the combination, you must combine any sections entitled
- "History" in the various original documents, forming one section
- entitled "History"; likewise combine any sections entitled
- "Acknowledgments", and any sections entitled "Dedications". You
- must delete all sections entitled "Endorsements."
-
- 6. COLLECTIONS OF DOCUMENTS
-
- You may make a collection consisting of the Document and other
- documents released under this License, and replace the individual
- copies of this License in the various documents with a single copy
- that is included in the collection, provided that you follow the
- rules of this License for verbatim copying of each of the
- documents in all other respects.
-
- You may extract a single document from such a collection, and
- distribute it individually under this License, provided you insert
- a copy of this License into the extracted document, and follow
- this License in all other respects regarding verbatim copying of
- that document.
-
- 7. AGGREGATION WITH INDEPENDENT WORKS
-
- A compilation of the Document or its derivatives with other
- separate and independent documents or works, in or on a volume of
- a storage or distribution medium, does not as a whole count as a
- Modified Version of the Document, provided no compilation
- copyright is claimed for the compilation. Such a compilation is
- called an "aggregate", and this License does not apply to the
- other self-contained works thus compiled with the Document, on
- account of their being thus compiled, if they are not themselves
- derivative works of the Document.
-
- If the Cover Text requirement of section 3 is applicable to these
- copies of the Document, then if the Document is less than one
- quarter of the entire aggregate, the Document's Cover Texts may be
- placed on covers that surround only the Document within the
- aggregate. Otherwise they must appear on covers around the whole
- aggregate.
-
- 8. TRANSLATION
-
- Translation is considered a kind of modification, so you may
- distribute translations of the Document under the terms of section
- 4. Replacing Invariant Sections with translations requires special
- permission from their copyright holders, but you may include
- translations of some or all Invariant Sections in addition to the
- original versions of these Invariant Sections. You may include a
- translation of this License provided that you also include the
- original English version of this License. In case of a
- disagreement between the translation and the original English
- version of this License, the original English version will prevail.
-
- 9. TERMINATION
-
- You may not copy, modify, sublicense, or distribute the Document
- except as expressly provided for under this License. Any other
- attempt to copy, modify, sublicense or distribute the Document is
- void, and will automatically terminate your rights under this
- License. However, parties who have received copies, or rights,
- from you under this License will not have their licenses
- terminated so long as such parties remain in full compliance.
-
- 10. FUTURE REVISIONS OF THIS LICENSE
-
- The Free Software Foundation may publish new, revised versions of
- the GNU Free Documentation License from time to time. Such new
- versions will be similar in spirit to the present version, but may
- differ in detail to address new problems or concerns. See
- `http://www.gnu.org/copyleft/'.
-
- Each version of the License is given a distinguishing version
- number. If the Document specifies that a particular numbered
- version of this License "or any later version" applies to it, you
- have the option of following the terms and conditions either of
- that specified version or of any later version that has been
- published (not as a draft) by the Free Software Foundation. If
- the Document does not specify a version number of this License,
- you may choose any version ever published (not as a draft) by the
- Free Software Foundation.
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
- To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
- Copyright (C) YEAR YOUR NAME.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.1
- or any later version published by the Free Software Foundation;
- with the Invariant Sections being LIST THEIR TITLES, with the
- Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
- A copy of the license is included in the section entitled ``GNU
- Free Documentation License''.
-
- If you have no Invariant Sections, write "with no Invariant Sections"
-instead of saying which ones are invariant. If you have no Front-Cover
-Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
-LIST"; likewise for Back-Cover Texts.
-
- If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License, to
-permit their use in free software.
-
-\1f
-File: cpp.info, Node: Option Index, Next: Index of Directives, Prev: GNU Free Documentation License, Up: Top
-
-Option Index
-************
-
- CPP's command line options are indexed here without any initial `-'
-or `--'.
-
-* Menu:
-
-* $: Invocation.
-* A: Invocation.
-* A-: Invocation.
-* ansi: Invocation.
-* C: Invocation.
-* D: Invocation.
-* dD: Invocation.
-* dI: Invocation.
-* dM: Invocation.
-* dN: Invocation.
-* fno-show-column: Invocation.
-* fpreprocessed: Invocation.
-* ftabstop: Invocation.
-* gcc: Invocation.
-* H: Invocation.
-* h: Invocation.
-* help: Invocation.
-* I: Invocation.
-* I-: Invocation.
-* idirafter: Invocation.
-* imacros: Invocation.
-* include: Invocation.
-* iprefix: Invocation.
-* isystem: Invocation.
-* iwithprefix: Invocation.
-* iwithprefixbefore: Invocation.
-* M: Invocation.
-* MD: Invocation.
-* MF: Invocation.
-* MG: Invocation.
-* MM: Invocation.
-* MMD: Invocation.
-* MP: Invocation.
-* MQ: Invocation.
-* MT: Invocation.
-* nostdinc: Invocation.
-* nostdinc++: Invocation.
-* o: Invocation.
-* P: Invocation.
-* pedantic: Invocation.
-* pedantic-errors: Invocation.
-* remap: Invocation.
-* std=: Invocation.
-* target-help: Invocation.
-* traditional: Invocation.
-* trigraphs: Invocation.
-* U: Invocation.
-* undef: Invocation.
-* v: Invocation.
-* version: Invocation.
-* w: Invocation.
-* Wall: Invocation.
-* Wcomment: Invocation.
-* Wcomments: Invocation.
-* Werror: Invocation.
-* Wimport: Invocation.
-* Wsystem-headers: Invocation.
-* Wtraditional: Invocation.
-* Wtrigraphs: Invocation.
-* Wundef: Invocation.
-* x: Invocation.
-
-\1f
-File: cpp.info, Node: Index of Directives, Next: Concept Index, Prev: Option Index, Up: Top
-
-Index of Directives
-*******************
-
-* Menu:
-
-* #assert: Assertions.
-* #define: Object-like Macros.
-* #elif: Elif.
-* #else: Else.
-* #endif: Ifdef.
-* #error: Diagnostics.
-* #ident: Other Directives.
-* #if: Conditional Syntax.
-* #ifdef: Ifdef.
-* #ifndef: Ifdef.
-* #import: Obsolete once-only headers.
-* #include: Include Syntax.
-* #include_next: Wrapper Headers.
-* #line: Line Control.
-* #pragma GCC dependency: Pragmas.
-* #pragma GCC poison: Pragmas.
-* #pragma GCC system_header <1>: Pragmas.
-* #pragma GCC system_header: System Headers.
-* #sccs: Other Directives.
-* #unassert: Assertions.
-* #undef: Undefining and Redefining Macros.
-* #warning: Diagnostics.
-* C_INCLUDE_PATH: Environment Variables.
-* CPATH: Environment Variables.
-* CPLUS_INCLUDE_PATH: Environment Variables.
-* DEPENDENCIES_OUTPUT: Environment Variables.
-* OBJC_INCLUDE_PATH: Environment Variables.
-* SUNPRO_DEPENDENCIES: Environment Variables.
-