URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [doc/] [cpp.1] - Rev 358
Go to most recent revision | Compare with Previous | Blame | View Log
.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05).\".\" Standard preamble:.\" ========================================================================.de Sh \" Subsection heading.br.if t .Sp.ne 5.PP\fB\\$1\fR.PP...de Sp \" Vertical space (when we can't use .PP).if t .sp .5v.if n .sp...de Vb \" Begin verbatim text.ft CW.nf.ne \\$1...de Ve \" End verbatim text.ft R.fi...\" Set up some character translations and predefined strings. \*(-- will.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left.\" double quote, and \*(R" will give a right double quote. \*(C+ will.\" give a nicer C++. Capital omega is used to do unbreakable dashes and.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,.\" nothing in troff, for use with C<>..tr \(*W-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'.ie n \{\. ds -- \(*W-. ds PI pi. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch. ds L" "". ds R" "". ds C` "". ds C' ""'br\}.el\{\. ds -- \|\(em\|. ds PI \(*p. ds L" ``. ds R" '''br\}.\".\" Escape single quotes in literal strings from groff's Unicode transform..ie \n(.g .ds Aq \(aq.el .ds Aq '.\".\" If the F register is turned on, we'll generate index entries on stderr for.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index.\" entries marked with X<> in POD. Of course, you'll have to process the.\" output yourself in some meaningful fashion..ie \nF \{\. de IX. tm Index:\\$1\t\\n%\t"\\$2"... nr % 0. rr F.\}.el \{\. de IX...\}.\".\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2)..\" Fear. Run. Save yourself. No user-serviceable parts.. \" fudge factors for nroff and troff.if n \{\. ds #H 0. ds #V .8m. ds #F .3m. ds #[ \f1. ds #] \fP.\}.if t \{\. ds #H ((1u-(\\\\n(.fu%2u))*.13m). ds #V .6m. ds #F 0. ds #[ \&. ds #] \&.\}. \" simple accents for nroff and troff.if n \{\. ds ' \&. ds ` \&. ds ^ \&. ds , \&. ds ~ ~. ds /.\}.if t \{\. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u". ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'.\}. \" troff and (daisy-wheel) nroff accents.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'.ds 8 \h'\*(#H'\(*b\h'-\*(#H'.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#].ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#].ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#].ds ae a\h'-(\w'a'u*4/10)'e.ds Ae A\h'-(\w'A'u*4/10)'E. \" corrections for vroff.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'. \" for low resolution devices (crt and lpr).if \n(.H>23 .if \n(.V>19 \\{\. ds : e. ds 8 ss. ds o a. ds d- d\h'-1'\(ga. ds D- D\h'-1'\(hy. ds th \o'bp'. ds Th \o'LP'. ds ae ae. ds Ae AE.\}.rm #[ #] #H #V #F C.\" ========================================================================.\".IX Title "CPP 1".TH CPP 1 "2010-07-31" "gcc-4.5.1" "GNU".\" For nroff, turn off justification. Always turn off hyphenation; it makes.\" way too many mistakes in technical documents..if n .ad l.nh.SH "NAME"cpp \- The C Preprocessor.SH "SYNOPSIS".IX Header "SYNOPSIS"cpp [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR][\fB\-I\fR\fIdir\fR...] [\fB\-iquote\fR\fIdir\fR...][\fB\-W\fR\fIwarn\fR...][\fB\-M\fR|\fB\-MM\fR] [\fB\-MG\fR] [\fB\-MF\fR \fIfilename\fR][\fB\-MP\fR] [\fB\-MQ\fR \fItarget\fR...][\fB\-MT\fR \fItarget\fR...][\fB\-P\fR] [\fB\-fno\-working\-directory\fR][\fB\-x\fR \fIlanguage\fR] [\fB\-std=\fR\fIstandard\fR]\fIinfile\fR \fIoutfile\fR.PPOnly the most useful options are listed here; see below for the remainder..SH "DESCRIPTION".IX Header "DESCRIPTION"The C preprocessor, often known as \fIcpp\fR, is a \fImacro processor\fRthat is used automatically by the C compiler to transform your programbefore compilation. It is called a macro processor because it allowsyou to define \fImacros\fR, which are brief abbreviations for longerconstructs..PPThe C preprocessor is intended to be used only with C, \*(C+, andObjective-C source code. In the past, it has been abused as a generaltext processor. It will choke on input which does not obey C's lexicalrules. For example, apostrophes will be interpreted as the beginning ofcharacter constants, and cause errors. Also, you cannot rely on itpreserving characteristics of the input which are not significant toC\-family languages. If a Makefile is preprocessed, all the hard tabswill be removed, and the Makefile will not work..PPHaving said that, you can often get away with using cpp on things whichare not C. Other Algol-ish programming languages are often safe(Pascal, Ada, etc.) So is assembly, with caution. \fB\-traditional\-cpp\fRmode preserves more white space, and is otherwise more permissive. Manyof the problems can be avoided by writing C or \*(C+ style commentsinstead of native language comments, and keeping macros simple..PPWherever possible, you should use a preprocessor geared to the languageyou are writing in. Modern versions of the \s-1GNU\s0 assembler have macrofacilities. Most high level programming languages have their ownconditional compilation and inclusion mechanism. If all else fails,try a true general text processor, such as \s-1GNU\s0 M4..PPC preprocessors vary in some details. This manual discusses the \s-1GNU\s0 Cpreprocessor, which provides a small superset of the features of \s-1ISO\s0Standard C. In its default mode, the \s-1GNU\s0 C preprocessor does not do afew things required by the standard. These are features which arerarely, if ever, used, and may cause surprising changes to the meaningof a program which does not expect them. To get strict \s-1ISO\s0 Standard C,you should use the \fB\-std=c90\fR or \fB\-std=c99\fR options, dependingon which version of the standard you want. To get all the mandatorydiagnostics, you must also use \fB\-pedantic\fR..PPThis manual describes the behavior of the \s-1ISO\s0 preprocessor. Tominimize gratuitous differences, where the \s-1ISO\s0 preprocessor'sbehavior does not conflict with traditional semantics, thetraditional preprocessor should behave the same way. The variousdifferences that do exist are detailed in the section \fBTraditionalMode\fR..PPFor clarity, unless noted otherwise, references to \fB\s-1CPP\s0\fR in thismanual refer to \s-1GNU\s0 \s-1CPP\s0..SH "OPTIONS".IX Header "OPTIONS"The C preprocessor expects two file names as arguments, \fIinfile\fR and\&\fIoutfile\fR. The preprocessor reads \fIinfile\fR together with anyother files it specifies with \fB#include\fR. All the output generatedby the combined input files is written in \fIoutfile\fR..PPEither \fIinfile\fR or \fIoutfile\fR may be \fB\-\fR, which as\&\fIinfile\fR means to read from standard input and as \fIoutfile\fRmeans to write to standard output. Also, if either file is omitted, itmeans the same as if \fB\-\fR had been specified for that file..PPUnless otherwise noted, or the option ends in \fB=\fR, all optionswhich take an argument may have that argument appear either immediatelyafter the option, or with a space between option and argument:\&\fB\-Ifoo\fR and \fB\-I foo\fR have the same effect..PPMany options have multi-letter names; therefore multiple single-letteroptions may \fInot\fR be grouped: \fB\-dM\fR is very different from\&\fB\-d\ \-M\fR..IP "\fB\-D\fR \fIname\fR" 4.IX Item "-D name"Predefine \fIname\fR as a macro, with definition \f(CW1\fR..IP "\fB\-D\fR \fIname\fR\fB=\fR\fIdefinition\fR" 4.IX Item "-D name=definition"The contents of \fIdefinition\fR are tokenized and processed as ifthey appeared during translation phase three in a \fB#define\fRdirective. In particular, the definition will be truncated byembedded newline characters..SpIf you are invoking the preprocessor from a shell or shell-likeprogram you may need to use the shell's quoting syntax to protectcharacters such as spaces that have a meaning in the shell syntax..SpIf you wish to define a function-like macro on the command line, writeits argument list with surrounding parentheses before the equals sign(if any). Parentheses are meaningful to most shells, so you will needto quote the option. With \fBsh\fR and \fBcsh\fR,\&\fB\-D'\fR\fIname\fR\fB(\fR\fIargs...\fR\fB)=\fR\fIdefinition\fR\fB'\fR works..Sp\&\fB\-D\fR and \fB\-U\fR options are processed in the order theyare given on the command line. All \fB\-imacros\fR \fIfile\fR and\&\fB\-include\fR \fIfile\fR options are processed after all\&\fB\-D\fR and \fB\-U\fR options..IP "\fB\-U\fR \fIname\fR" 4.IX Item "-U name"Cancel any previous definition of \fIname\fR, either built in orprovided with a \fB\-D\fR option..IP "\fB\-undef\fR" 4.IX Item "-undef"Do not predefine any system-specific or GCC-specific macros. Thestandard predefined macros remain defined..IP "\fB\-I\fR \fIdir\fR" 4.IX Item "-I dir"Add the directory \fIdir\fR to the list of directories to be searchedfor header files..SpDirectories named by \fB\-I\fR are searched before the standardsystem include directories. If the directory \fIdir\fR is a standardsystem include directory, the option is ignored to ensure that thedefault search order for system directories and the special treatmentof system headers are not defeated\&.If \fIdir\fR begins with \f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR will be replacedby the sysroot prefix; see \fB\-\-sysroot\fR and \fB\-isysroot\fR..IP "\fB\-o\fR \fIfile\fR" 4.IX Item "-o file"Write output to \fIfile\fR. This is the same as specifying \fIfile\fRas the second non-option argument to \fBcpp\fR. \fBgcc\fR has adifferent interpretation of a second non-option argument, so you mustuse \fB\-o\fR to specify the output file..IP "\fB\-Wall\fR" 4.IX Item "-Wall"Turns on all optional warnings which are desirable for normal code.At present this is \fB\-Wcomment\fR, \fB\-Wtrigraphs\fR,\&\fB\-Wmultichar\fR and a warning about integer promotion causing achange of sign in \f(CW\*(C`#if\*(C'\fR expressions. Note that many of thepreprocessor's warnings are on by default and have no options tocontrol them..IP "\fB\-Wcomment\fR" 4.IX Item "-Wcomment".PD 0.IP "\fB\-Wcomments\fR" 4.IX Item "-Wcomments".PDWarn whenever a comment-start sequence \fB/*\fR appears in a \fB/*\fRcomment, or whenever a backslash-newline appears in a \fB//\fR comment.(Both forms have the same effect.).IP "\fB\-Wtrigraphs\fR" 4.IX Item "-Wtrigraphs"Most trigraphs in comments cannot affect the meaning of the program.However, a trigraph that would form an escaped newline (\fB??/\fR atthe end of a line) can, by changing where the comment begins or ends.Therefore, only trigraphs that would form escaped newlines producewarnings inside a comment..SpThis option is implied by \fB\-Wall\fR. If \fB\-Wall\fR is notgiven, this option is still enabled unless trigraphs are enabled. Toget trigraph conversion without warnings, but get the other\&\fB\-Wall\fR warnings, use \fB\-trigraphs \-Wall \-Wno\-trigraphs\fR..IP "\fB\-Wtraditional\fR" 4.IX Item "-Wtraditional"Warn about certain constructs that behave differently in traditional and\&\s-1ISO\s0 C. Also warn about \s-1ISO\s0 C constructs that have no traditional Cequivalent, and problematic constructs which should be avoided..IP "\fB\-Wundef\fR" 4.IX Item "-Wundef"Warn whenever an identifier which is not a macro is encountered in an\&\fB#if\fR directive, outside of \fBdefined\fR. Such identifiers arereplaced with zero..IP "\fB\-Wunused\-macros\fR" 4.IX Item "-Wunused-macros"Warn about macros defined in the main file that are unused. A macrois \fIused\fR if it is expanded or tested for existence at least once.The preprocessor will also warn if the macro has not been used at thetime it is redefined or undefined..SpBuilt-in macros, macros defined on the command line, and macrosdefined in include files are not warned about..Sp\&\fINote:\fR If a macro is actually used, but only used in skippedconditional blocks, then \s-1CPP\s0 will report it as unused. To avoid thewarning in such a case, you might improve the scope of the macro'sdefinition by, for example, moving it into the first skipped block.Alternatively, you could provide a dummy use with something like:.Sp.Vb 2\& #if defined the_macro_causing_the_warning\& #endif.Ve.IP "\fB\-Wendif\-labels\fR" 4.IX Item "-Wendif-labels"Warn whenever an \fB#else\fR or an \fB#endif\fR are followed by text.This usually happens in code of the form.Sp.Vb 5\& #if FOO\& ...\& #else FOO\& ...\& #endif FOO.Ve.SpThe second and third \f(CW\*(C`FOO\*(C'\fR should be in comments, but often are notin older programs. This warning is on by default..IP "\fB\-Werror\fR" 4.IX Item "-Werror"Make all warnings into hard errors. Source code which triggers warningswill be rejected..IP "\fB\-Wsystem\-headers\fR" 4.IX Item "-Wsystem-headers"Issue warnings for code in system headers. These are normally unhelpfulin finding bugs in your own code, therefore suppressed. If you areresponsible for the system library, you may want to see them..IP "\fB\-w\fR" 4.IX Item "-w"Suppress all warnings, including those which \s-1GNU\s0 \s-1CPP\s0 issues by default..IP "\fB\-pedantic\fR" 4.IX Item "-pedantic"Issue all the mandatory diagnostics listed in the C standard. Some ofthem are left out by default, since they trigger frequently on harmlesscode..IP "\fB\-pedantic\-errors\fR" 4.IX Item "-pedantic-errors"Issue all the mandatory diagnostics, and make all mandatory diagnosticsinto errors. This includes mandatory diagnostics that \s-1GCC\s0 issueswithout \fB\-pedantic\fR but treats as warnings..IP "\fB\-M\fR" 4.IX Item "-M"Instead of outputting the result of preprocessing, output a rulesuitable for \fBmake\fR describing the dependencies of the mainsource file. The preprocessor outputs one \fBmake\fR rule containingthe object file name for that source file, a colon, and the names of allthe included files, including those coming from \fB\-include\fR or\&\fB\-imacros\fR command line options..SpUnless specified explicitly (with \fB\-MT\fR or \fB\-MQ\fR), theobject file name consists of the name of the source file with anysuffix replaced with object file suffix and with any leading directoryparts removed. If there are many included files then the rule issplit into several lines using \fB\e\fR\-newline. The rule has nocommands..SpThis option does not suppress the preprocessor's debug output, such as\&\fB\-dM\fR. To avoid mixing such debug output with the dependencyrules you should explicitly specify the dependency output file with\&\fB\-MF\fR, or use an environment variable like\&\fB\s-1DEPENDENCIES_OUTPUT\s0\fR. Debug outputwill still be sent to the regular output stream as normal..SpPassing \fB\-M\fR to the driver implies \fB\-E\fR, and suppresseswarnings with an implicit \fB\-w\fR..IP "\fB\-MM\fR" 4.IX Item "-MM"Like \fB\-M\fR but do not mention header files that are found insystem header directories, nor header files that are included,directly or indirectly, from such a header..SpThis implies that the choice of angle brackets or double quotes in an\&\fB#include\fR directive does not in itself determine whether thatheader will appear in \fB\-MM\fR dependency output. This is aslight change in semantics from \s-1GCC\s0 versions 3.0 and earlier..IP "\fB\-MF\fR \fIfile\fR" 4.IX Item "-MF file"When used with \fB\-M\fR or \fB\-MM\fR, specifies afile to write the dependencies to. If no \fB\-MF\fR switch is giventhe preprocessor sends the rules to the same place it would have sentpreprocessed output..SpWhen used with the driver options \fB\-MD\fR or \fB\-MMD\fR,\&\fB\-MF\fR overrides the default dependency output file..IP "\fB\-MG\fR" 4.IX Item "-MG"In conjunction with an option such as \fB\-M\fR requestingdependency generation, \fB\-MG\fR assumes missing header files aregenerated files and adds them to the dependency list without raisingan error. The dependency filename is taken directly from the\&\f(CW\*(C`#include\*(C'\fR directive without prepending any path. \fB\-MG\fRalso suppresses preprocessed output, as a missing header file rendersthis useless..SpThis feature is used in automatic updating of makefiles..IP "\fB\-MP\fR" 4.IX Item "-MP"This option instructs \s-1CPP\s0 to add a phony target for each dependencyother than the main file, causing each to depend on nothing. Thesedummy rules work around errors \fBmake\fR gives if you remove headerfiles without updating the \fIMakefile\fR to match..SpThis is typical output:.Sp.Vb 1\& test.o: test.c test.h\&\& test.h:.Ve.IP "\fB\-MT\fR \fItarget\fR" 4.IX Item "-MT target"Change the target of the rule emitted by dependency generation. Bydefault \s-1CPP\s0 takes the name of the main input file, deletes anydirectory components and any file suffix such as \fB.c\fR, andappends the platform's usual object suffix. The result is the target..SpAn \fB\-MT\fR option will set the target to be exactly the string youspecify. If you want multiple targets, you can specify them as a singleargument to \fB\-MT\fR, or use multiple \fB\-MT\fR options..SpFor example, \fB\-MT\ '$(objpfx)foo.o'\fR might give.Sp.Vb 1\& $(objpfx)foo.o: foo.c.Ve.IP "\fB\-MQ\fR \fItarget\fR" 4.IX Item "-MQ target"Same as \fB\-MT\fR, but it quotes any characters which are special toMake. \fB\-MQ\ '$(objpfx)foo.o'\fR gives.Sp.Vb 1\& $$(objpfx)foo.o: foo.c.Ve.SpThe default target is automatically quoted, as if it were given with\&\fB\-MQ\fR..IP "\fB\-MD\fR" 4.IX Item "-MD"\&\fB\-MD\fR is equivalent to \fB\-M \-MF\fR \fIfile\fR, except that\&\fB\-E\fR is not implied. The driver determines \fIfile\fR based onwhether an \fB\-o\fR option is given. If it is, the driver uses itsargument but with a suffix of \fI.d\fR, otherwise it takes the nameof the input file, removes any directory components and suffix, andapplies a \fI.d\fR suffix..SpIf \fB\-MD\fR is used in conjunction with \fB\-E\fR, any\&\fB\-o\fR switch is understood to specify the dependency output file, but if used without \fB\-E\fR, each \fB\-o\fRis understood to specify a target object file..SpSince \fB\-E\fR is not implied, \fB\-MD\fR can be used to generatea dependency output file as a side-effect of the compilation process..IP "\fB\-MMD\fR" 4.IX Item "-MMD"Like \fB\-MD\fR except mention only user header files, not systemheader files..IP "\fB\-x c\fR" 4.IX Item "-x c".PD 0.IP "\fB\-x c++\fR" 4.IX Item "-x c++".IP "\fB\-x objective-c\fR" 4.IX Item "-x objective-c".IP "\fB\-x assembler-with-cpp\fR" 4.IX Item "-x assembler-with-cpp".PDSpecify the source language: C, \*(C+, Objective-C, or assembly. This hasnothing to do with standards conformance or extensions; it merelyselects which base syntax to expect. If you give none of these options,cpp will deduce the language from the extension of the source file:\&\fB.c\fR, \fB.cc\fR, \fB.m\fR, or \fB.S\fR. Some other commonextensions for \*(C+ and assembly are also recognized. If cpp does notrecognize the extension, it will treat the file as C; this is the mostgeneric mode..Sp\&\fINote:\fR Previous versions of cpp accepted a \fB\-lang\fR optionwhich selected both the language and the standards conformance level.This option has been removed, because it conflicts with the \fB\-l\fRoption..IP "\fB\-std=\fR\fIstandard\fR" 4.IX Item "-std=standard".PD 0.IP "\fB\-ansi\fR" 4.IX Item "-ansi".PDSpecify the standard to which the code should conform. Currently \s-1CPP\s0knows about C and \*(C+ standards; others may be added in the future..Sp\&\fIstandard\fRmay be one of:.RS 4.ie n .IP """c90""" 4.el .IP "\f(CWc90\fR" 4.IX Item "c90".PD 0.ie n .IP """c89""" 4.el .IP "\f(CWc89\fR" 4.IX Item "c89".ie n .IP """iso9899:1990""" 4.el .IP "\f(CWiso9899:1990\fR" 4.IX Item "iso9899:1990".PDThe \s-1ISO\s0 C standard from 1990. \fBc90\fR is the customary shorthand forthis version of the standard..SpThe \fB\-ansi\fR option is equivalent to \fB\-std=c90\fR..ie n .IP """iso9899:199409""" 4.el .IP "\f(CWiso9899:199409\fR" 4.IX Item "iso9899:199409"The 1990 C standard, as amended in 1994..ie n .IP """iso9899:1999""" 4.el .IP "\f(CWiso9899:1999\fR" 4.IX Item "iso9899:1999".PD 0.ie n .IP """c99""" 4.el .IP "\f(CWc99\fR" 4.IX Item "c99".ie n .IP """iso9899:199x""" 4.el .IP "\f(CWiso9899:199x\fR" 4.IX Item "iso9899:199x".ie n .IP """c9x""" 4.el .IP "\f(CWc9x\fR" 4.IX Item "c9x".PDThe revised \s-1ISO\s0 C standard, published in December 1999. Beforepublication, this was known as C9X..ie n .IP """gnu90""" 4.el .IP "\f(CWgnu90\fR" 4.IX Item "gnu90".PD 0.ie n .IP """gnu89""" 4.el .IP "\f(CWgnu89\fR" 4.IX Item "gnu89".PDThe 1990 C standard plus \s-1GNU\s0 extensions. This is the default..ie n .IP """gnu99""" 4.el .IP "\f(CWgnu99\fR" 4.IX Item "gnu99".PD 0.ie n .IP """gnu9x""" 4.el .IP "\f(CWgnu9x\fR" 4.IX Item "gnu9x".PDThe 1999 C standard plus \s-1GNU\s0 extensions..ie n .IP """c++98""" 4.el .IP "\f(CWc++98\fR" 4.IX Item "c++98"The 1998 \s-1ISO\s0 \*(C+ standard plus amendments..ie n .IP """gnu++98""" 4.el .IP "\f(CWgnu++98\fR" 4.IX Item "gnu++98"The same as \fB\-std=c++98\fR plus \s-1GNU\s0 extensions. This is thedefault for \*(C+ code..RE.RS 4.RE.IP "\fB\-I\-\fR" 4.IX Item "-I-"Split the include path. Any directories specified with \fB\-I\fRoptions before \fB\-I\-\fR are searched only for headers requested with\&\f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR; they are not searched for\&\f(CW\*(C`#include\ <\f(CIfile\f(CW>\*(C'\fR. If additional directories arespecified with \fB\-I\fR options after the \fB\-I\-\fR, thosedirectories are searched for all \fB#include\fR directives..SpIn addition, \fB\-I\-\fR inhibits the use of the directory of the currentfile directory as the first search directory for \f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR..SpThis option has been deprecated..IP "\fB\-nostdinc\fR" 4.IX Item "-nostdinc"Do not search the standard system directories for header files.Only the directories you have specified with \fB\-I\fR options(and the directory of the current file, if appropriate) are searched..IP "\fB\-nostdinc++\fR" 4.IX Item "-nostdinc++"Do not search for header files in the \*(C+\-specific standard directories,but do still search the other standard directories. (This option isused when building the \*(C+ library.).IP "\fB\-include\fR \fIfile\fR" 4.IX Item "-include file"Process \fIfile\fR as if \f(CW\*(C`#include "file"\*(C'\fR appeared as the firstline of the primary source file. However, the first directory searchedfor \fIfile\fR is the preprocessor's working directory \fIinstead of\fRthe directory containing the main source file. If not found there, itis searched for in the remainder of the \f(CW\*(C`#include "..."\*(C'\fR searchchain as normal..SpIf multiple \fB\-include\fR options are given, the files are includedin the order they appear on the command line..IP "\fB\-imacros\fR \fIfile\fR" 4.IX Item "-imacros file"Exactly like \fB\-include\fR, except that any output produced byscanning \fIfile\fR is thrown away. Macros it defines remain defined.This allows you to acquire all the macros from a header without alsoprocessing its declarations..SpAll files specified by \fB\-imacros\fR are processed before all filesspecified by \fB\-include\fR..IP "\fB\-idirafter\fR \fIdir\fR" 4.IX Item "-idirafter dir"Search \fIdir\fR for header files, but do it \fIafter\fR alldirectories specified with \fB\-I\fR and the standard system directorieshave been exhausted. \fIdir\fR is treated as a system include directory.If \fIdir\fR begins with \f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR will be replacedby the sysroot prefix; see \fB\-\-sysroot\fR and \fB\-isysroot\fR..IP "\fB\-iprefix\fR \fIprefix\fR" 4.IX Item "-iprefix prefix"Specify \fIprefix\fR as the prefix for subsequent \fB\-iwithprefix\fRoptions. If the prefix represents a directory, you should include thefinal \fB/\fR..IP "\fB\-iwithprefix\fR \fIdir\fR" 4.IX Item "-iwithprefix dir".PD 0.IP "\fB\-iwithprefixbefore\fR \fIdir\fR" 4.IX Item "-iwithprefixbefore dir".PDAppend \fIdir\fR to the prefix specified previously with\&\fB\-iprefix\fR, and add the resulting directory to the include searchpath. \fB\-iwithprefixbefore\fR puts it in the same place \fB\-I\fRwould; \fB\-iwithprefix\fR puts it where \fB\-idirafter\fR would..IP "\fB\-isysroot\fR \fIdir\fR" 4.IX Item "-isysroot dir"This option is like the \fB\-\-sysroot\fR option, but applies only toheader files. See the \fB\-\-sysroot\fR option for more information..IP "\fB\-imultilib\fR \fIdir\fR" 4.IX Item "-imultilib dir"Use \fIdir\fR as a subdirectory of the directory containingtarget-specific \*(C+ headers..IP "\fB\-isystem\fR \fIdir\fR" 4.IX Item "-isystem dir"Search \fIdir\fR for header files, after all directories specified by\&\fB\-I\fR but before the standard system directories. Mark itas a system directory, so that it gets the same special treatment asis applied to the standard system directories..SpIf \fIdir\fR begins with \f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR will be replacedby the sysroot prefix; see \fB\-\-sysroot\fR and \fB\-isysroot\fR..IP "\fB\-iquote\fR \fIdir\fR" 4.IX Item "-iquote dir"Search \fIdir\fR only for header files requested with\&\f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR; they are not searched for\&\f(CW\*(C`#include\ <\f(CIfile\f(CW>\*(C'\fR, before all directories specified by\&\fB\-I\fR and before the standard system directories..SpIf \fIdir\fR begins with \f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR will be replacedby the sysroot prefix; see \fB\-\-sysroot\fR and \fB\-isysroot\fR..IP "\fB\-fdirectives\-only\fR" 4.IX Item "-fdirectives-only"When preprocessing, handle directives, but do not expand macros..SpThe option's behavior depends on the \fB\-E\fR and \fB\-fpreprocessed\fRoptions..SpWith \fB\-E\fR, preprocessing is limited to the handling of directivessuch as \f(CW\*(C`#define\*(C'\fR, \f(CW\*(C`#ifdef\*(C'\fR, and \f(CW\*(C`#error\*(C'\fR. Otherpreprocessor operations, such as macro expansion and trigraphconversion are not performed. In addition, the \fB\-dD\fR option isimplicitly enabled..SpWith \fB\-fpreprocessed\fR, predefinition of command line and mostbuiltin macros is disabled. Macros such as \f(CW\*(C`_\|_LINE_\|_\*(C'\fR, which arecontextually dependent, are handled normally. This enables compilation offiles previously preprocessed with \f(CW\*(C`\-E \-fdirectives\-only\*(C'\fR..SpWith both \fB\-E\fR and \fB\-fpreprocessed\fR, the rules for\&\fB\-fpreprocessed\fR take precedence. This enables full preprocessing offiles previously preprocessed with \f(CW\*(C`\-E \-fdirectives\-only\*(C'\fR..IP "\fB\-fdollars\-in\-identifiers\fR" 4.IX Item "-fdollars-in-identifiers"Accept \fB$\fR in identifiers..IP "\fB\-fextended\-identifiers\fR" 4.IX Item "-fextended-identifiers"Accept universal character names in identifiers. This option isexperimental; in a future version of \s-1GCC\s0, it will be enabled bydefault for C99 and \*(C+..IP "\fB\-fpreprocessed\fR" 4.IX Item "-fpreprocessed"Indicate to the preprocessor that the input file has already beenpreprocessed. This suppresses things like macro expansion, trigraphconversion, escaped newline splicing, and processing of most directives.The preprocessor still recognizes and removes comments, so that you canpass a file preprocessed with \fB\-C\fR to the compiler withoutproblems. In this mode the integrated preprocessor is little more thana tokenizer for the front ends..Sp\&\fB\-fpreprocessed\fR is implicit if the input file has one of theextensions \fB.i\fR, \fB.ii\fR or \fB.mi\fR. These are theextensions that \s-1GCC\s0 uses for preprocessed files created by\&\fB\-save\-temps\fR..IP "\fB\-ftabstop=\fR\fIwidth\fR" 4.IX Item "-ftabstop=width"Set the distance between tab stops. This helps the preprocessor reportcorrect column numbers in warnings or errors, even if tabs appear on theline. If the value is less than 1 or greater than 100, the option isignored. The default is 8..IP "\fB\-fexec\-charset=\fR\fIcharset\fR" 4.IX Item "-fexec-charset=charset"Set the execution character set, used for string and characterconstants. The default is \s-1UTF\-8\s0. \fIcharset\fR can be any encodingsupported by the system's \f(CW\*(C`iconv\*(C'\fR library routine..IP "\fB\-fwide\-exec\-charset=\fR\fIcharset\fR" 4.IX Item "-fwide-exec-charset=charset"Set the wide execution character set, used for wide string andcharacter constants. The default is \s-1UTF\-32\s0 or \s-1UTF\-16\s0, whichevercorresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR. As with\&\fB\-fexec\-charset\fR, \fIcharset\fR can be any encoding supportedby the system's \f(CW\*(C`iconv\*(C'\fR library routine; however, you will haveproblems with encodings that do not fit exactly in \f(CW\*(C`wchar_t\*(C'\fR..IP "\fB\-finput\-charset=\fR\fIcharset\fR" 4.IX Item "-finput-charset=charset"Set the input character set, used for translation from the characterset of the input file to the source character set used by \s-1GCC\s0. If thelocale does not specify, or \s-1GCC\s0 cannot get this information from thelocale, the default is \s-1UTF\-8\s0. This can be overridden by either the localeor this command line option. Currently the command line option takesprecedence if there's a conflict. \fIcharset\fR can be any encodingsupported by the system's \f(CW\*(C`iconv\*(C'\fR library routine..IP "\fB\-fworking\-directory\fR" 4.IX Item "-fworking-directory"Enable generation of linemarkers in the preprocessor output that willlet the compiler know the current working directory at the time ofpreprocessing. When this option is enabled, the preprocessor willemit, after the initial linemarker, a second linemarker with thecurrent working directory followed by two slashes. \s-1GCC\s0 will use thisdirectory, when it's present in the preprocessed input, as thedirectory emitted as the current working directory in some debugginginformation formats. This option is implicitly enabled if debugginginformation is enabled, but this can be inhibited with the negatedform \fB\-fno\-working\-directory\fR. If the \fB\-P\fR flag ispresent in the command line, this option has no effect, since no\&\f(CW\*(C`#line\*(C'\fR directives are emitted whatsoever..IP "\fB\-fno\-show\-column\fR" 4.IX Item "-fno-show-column"Do not print column numbers in diagnostics. This may be necessary ifdiagnostics are being scanned by a program that does not understand thecolumn numbers, such as \fBdejagnu\fR..IP "\fB\-A\fR \fIpredicate\fR\fB=\fR\fIanswer\fR" 4.IX Item "-A predicate=answer"Make an assertion with the predicate \fIpredicate\fR and answer\&\fIanswer\fR. This form is preferred to the older form \fB\-A\fR\&\fIpredicate\fR\fB(\fR\fIanswer\fR\fB)\fR, which is still supported, becauseit does not use shell special characters..IP "\fB\-A \-\fR\fIpredicate\fR\fB=\fR\fIanswer\fR" 4.IX Item "-A -predicate=answer"Cancel an assertion with the predicate \fIpredicate\fR and answer\&\fIanswer\fR..IP "\fB\-dCHARS\fR" 4.IX Item "-dCHARS"\&\fI\s-1CHARS\s0\fR is a sequence of one or more of the following characters,and must not be preceded by a space. Other characters are interpretedby the compiler proper, or reserved for future versions of \s-1GCC\s0, and soare silently ignored. If you specify characters whose behaviorconflicts, the result is undefined..RS 4.IP "\fBM\fR" 4.IX Item "M"Instead of the normal output, generate a list of \fB#define\fRdirectives for all the macros defined during the execution of thepreprocessor, including predefined macros. This gives you a way offinding out what is predefined in your version of the preprocessor.Assuming you have no file \fIfoo.h\fR, the command.Sp.Vb 1\& touch foo.h; cpp \-dM foo.h.Ve.Spwill show all the predefined macros..SpIf you use \fB\-dM\fR without the \fB\-E\fR option, \fB\-dM\fR isinterpreted as a synonym for \fB\-fdump\-rtl\-mach\fR..IP "\fBD\fR" 4.IX Item "D"Like \fBM\fR except in two respects: it does \fInot\fR include thepredefined macros, and it outputs \fIboth\fR the \fB#define\fRdirectives and the result of preprocessing. Both kinds of output go tothe standard output file..IP "\fBN\fR" 4.IX Item "N"Like \fBD\fR, but emit only the macro names, not their expansions..IP "\fBI\fR" 4.IX Item "I"Output \fB#include\fR directives in addition to the result ofpreprocessing..IP "\fBU\fR" 4.IX Item "U"Like \fBD\fR except that only macros that are expanded, or whosedefinedness is tested in preprocessor directives, are output; theoutput is delayed until the use or test of the macro; and\&\fB#undef\fR directives are also output for macros tested butundefined at the time..RE.RS 4.RE.IP "\fB\-P\fR" 4.IX Item "-P"Inhibit generation of linemarkers in the output from the preprocessor.This might be useful when running the preprocessor on something that isnot C code, and will be sent to a program which might be confused by thelinemarkers..IP "\fB\-C\fR" 4.IX Item "-C"Do not discard comments. All comments are passed through to the outputfile, except for comments in processed directives, which are deletedalong with the directive..SpYou should be prepared for side effects when using \fB\-C\fR; itcauses the preprocessor to treat comments as tokens in their own right.For example, comments appearing at the start of what would be adirective line have the effect of turning that line into an ordinarysource line, since the first token on the line is no longer a \fB#\fR..IP "\fB\-CC\fR" 4.IX Item "-CC"Do not discard comments, including during macro expansion. This islike \fB\-C\fR, except that comments contained within macros arealso passed through to the output file where the macro is expanded..SpIn addition to the side-effects of the \fB\-C\fR option, the\&\fB\-CC\fR option causes all \*(C+\-style comments inside a macroto be converted to C\-style comments. This is to prevent later useof that macro from inadvertently commenting out the remainder ofthe source line..SpThe \fB\-CC\fR option is generally used to support lint comments..IP "\fB\-traditional\-cpp\fR" 4.IX Item "-traditional-cpp"Try to imitate the behavior of old-fashioned C preprocessors, asopposed to \s-1ISO\s0 C preprocessors..IP "\fB\-trigraphs\fR" 4.IX Item "-trigraphs"Process trigraph sequences..IP "\fB\-remap\fR" 4.IX Item "-remap"Enable special code to work around file systems which only permit veryshort file names, such as MS-DOS..IP "\fB\-\-help\fR" 4.IX Item "--help".PD 0.IP "\fB\-\-target\-help\fR" 4.IX Item "--target-help".PDPrint text describing all the command line options instead ofpreprocessing anything..IP "\fB\-v\fR" 4.IX Item "-v"Verbose mode. Print out \s-1GNU\s0 \s-1CPP\s0's version number at the beginning ofexecution, and report the final form of the include path..IP "\fB\-H\fR" 4.IX Item "-H"Print the name of each header file used, in addition to other normalactivities. Each name is indented to show how deep in the\&\fB#include\fR stack it is. Precompiled header files are alsoprinted, even if they are found to be invalid; an invalid precompiledheader file is printed with \fB...x\fR and a valid one with \fB...!\fR ..IP "\fB\-version\fR" 4.IX Item "-version".PD 0.IP "\fB\-\-version\fR" 4.IX Item "--version".PDPrint out \s-1GNU\s0 \s-1CPP\s0's version number. With one dash, proceed topreprocess as normal. With two dashes, exit immediately..SH "ENVIRONMENT".IX Header "ENVIRONMENT"This section describes the environment variables that affect how \s-1CPP\s0operates. You can use them to specify directories or prefixes to usewhen searching for include files, or to control dependency output..PPNote that you can also specify places to search using options such as\&\fB\-I\fR, and control dependency output with options like\&\fB\-M\fR. These take precedence overenvironment variables, which in turn take precedence over theconfiguration of \s-1GCC\s0..IP "\fB\s-1CPATH\s0\fR" 4.IX Item "CPATH".PD 0.IP "\fBC_INCLUDE_PATH\fR" 4.IX Item "C_INCLUDE_PATH".IP "\fB\s-1CPLUS_INCLUDE_PATH\s0\fR" 4.IX Item "CPLUS_INCLUDE_PATH".IP "\fB\s-1OBJC_INCLUDE_PATH\s0\fR" 4.IX Item "OBJC_INCLUDE_PATH".PDEach variable's value is a list of directories separated by a specialcharacter, much like \fB\s-1PATH\s0\fR, in which to look for header files.The special character, \f(CW\*(C`PATH_SEPARATOR\*(C'\fR, is target-dependent anddetermined at \s-1GCC\s0 build time. For Microsoft Windows-based targets it is asemicolon, and for almost all other targets it is a colon..Sp\&\fB\s-1CPATH\s0\fR specifies a list of directories to be searched as ifspecified with \fB\-I\fR, but after any paths given with \fB\-I\fRoptions on the command line. This environment variable is usedregardless of which language is being preprocessed..SpThe remaining environment variables apply only when preprocessing theparticular language indicated. Each specifies a list of directoriesto be searched as if specified with \fB\-isystem\fR, but after anypaths given with \fB\-isystem\fR options on the command line..SpIn all these variables, an empty element instructs the compiler tosearch its current working directory. Empty elements can appear at thebeginning or end of a path. For instance, if the value of\&\fB\s-1CPATH\s0\fR is \f(CW\*(C`:/special/include\*(C'\fR, that has the sameeffect as \fB\-I.\ \-I/special/include\fR..IP "\fB\s-1DEPENDENCIES_OUTPUT\s0\fR" 4.IX Item "DEPENDENCIES_OUTPUT"If this variable is set, its value specifies how to outputdependencies for Make based on the non-system header files processedby the compiler. System header files are ignored in the dependencyoutput..SpThe value of \fB\s-1DEPENDENCIES_OUTPUT\s0\fR can be just a file name, inwhich case the Make rules are written to that file, guessing the targetname from the source file name. Or the value can have the form\&\fIfile\fR\fB \fR\fItarget\fR, in which case the rules are written tofile \fIfile\fR using \fItarget\fR as the target name..SpIn other words, this environment variable is equivalent to combiningthe options \fB\-MM\fR and \fB\-MF\fR,with an optional \fB\-MT\fR switch too..IP "\fB\s-1SUNPRO_DEPENDENCIES\s0\fR" 4.IX Item "SUNPRO_DEPENDENCIES"This variable is the same as \fB\s-1DEPENDENCIES_OUTPUT\s0\fR (see above),except that system header files are not ignored, so it implies\&\fB\-M\fR rather than \fB\-MM\fR. However, the dependence on themain input file is omitted..SH "SEE ALSO".IX Header "SEE ALSO"\&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7),\&\fIgcc\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), and the Info entries for \fIcpp\fR, \fIgcc\fR, and\&\fIbinutils\fR..SH "COPYRIGHT".IX Header "COPYRIGHT"Copyright (c) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,2008, 2009, 2010Free Software Foundation, Inc..PPPermission is granted to copy, distribute and/or modify this documentunder the terms of the \s-1GNU\s0 Free Documentation License, Version 1.2 orany later version published by the Free Software Foundation. A copy ofthe license is included in theman page \fIgfdl\fR\|(7).This manual contains no Invariant Sections. The Front-Cover Texts are(a) (see below), and the Back-Cover Texts are (b) (see below)..PP(a) The \s-1FSF\s0's Front-Cover Text is:.PP.Vb 1\& A GNU Manual.Ve.PP(b) The \s-1FSF\s0's Back-Cover Text is:.PP.Vb 3\& You have freedom to copy and modify this GNU Manual, like GNU\& software. Copies published by the Free Software Foundation raise\& funds for GNU development..Ve
Go to most recent revision | Compare with Previous | Blame | View Log
