arm-linux-cpp.1
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:37k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. ." Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
  2. ."
  3. ." Standard preamble:
  4. ." ========================================================================
  5. .de Sh " Subsection heading
  6. .br
  7. .if t .Sp
  8. .ne 5
  9. .PP
  10. fB\$1fR
  11. .PP
  12. ..
  13. .de Sp " Vertical space (when we can't use .PP)
  14. .if t .sp .5v
  15. .if n .sp
  16. ..
  17. .de Vb " Begin verbatim text
  18. .ft CW
  19. .nf
  20. .ne \$1
  21. ..
  22. .de Ve " End verbatim text
  23. .ft R
  24. .fi
  25. ..
  26. ." Set up some character translations and predefined strings.  *(-- will
  27. ." give an unbreakable dash, *(PI will give pi, *(L" will give a left
  28. ." double quote, and *(R" will give a right double quote.  | will give a
  29. ." real vertical bar.  *(C+ will give a nicer C++.  Capital omega is used to
  30. ." do unbreakable dashes and therefore won't be available.  *(C` and *(C'
  31. ." expand to `' in nroff, nothing in troff, for use with C<>.
  32. .tr (*W-|(bv*(Tr
  33. .ds C+ Cv'-.1v'h'-1p's-2+h'-1p'+s0v'.1v'h'-1p'
  34. .ie n {
  35. .    ds -- (*W-
  36. .    ds PI pi
  37. .    if (n(.H=4u)&(1m=24u) .ds -- (*Wh'-12u'(*Wh'-12u'-" diablo 10 pitch
  38. .    if (n(.H=4u)&(1m=20u) .ds -- (*Wh'-12u'(*Wh'-8u'-"  diablo 12 pitch
  39. .    ds L" ""
  40. .    ds R" ""
  41. .    ds C` ""
  42. .    ds C' ""
  43. 'br}
  44. .el{
  45. .    ds -- |(em|
  46. .    ds PI (*p
  47. .    ds L" ``
  48. .    ds R" ''
  49. 'br}
  50. ."
  51. ." If the F register is turned on, we'll generate index entries on stderr for
  52. ." titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
  53. ." entries marked with X<> in POD.  Of course, you'll have to process the
  54. ." output yourself in some meaningful fashion.
  55. .if nF {
  56. .    de IX
  57. .    tm Index:\$1t\n%t"\$2"
  58. ..
  59. .    nr % 0
  60. .    rr F
  61. .}
  62. ."
  63. ." For nroff, turn off justification.  Always turn off hyphenation; it makes
  64. ." way too many mistakes in technical documents.
  65. .hy 0
  66. .if n .na
  67. ."
  68. ." Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  69. ." Fear.  Run.  Save yourself.  No user-serviceable parts.
  70. .    " fudge factors for nroff and troff
  71. .if n {
  72. .    ds #H 0
  73. .    ds #V .8m
  74. .    ds #F .3m
  75. .    ds #[ f1
  76. .    ds #] fP
  77. .}
  78. .if t {
  79. .    ds #H ((1u-(\\n(.fu%2u))*.13m)
  80. .    ds #V .6m
  81. .    ds #F 0
  82. .    ds #[ &
  83. .    ds #] &
  84. .}
  85. .    " simple accents for nroff and troff
  86. .if n {
  87. .    ds ' &
  88. .    ds ` &
  89. .    ds ^ &
  90. .    ds , &
  91. .    ds ~ ~
  92. .    ds /
  93. .}
  94. .if t {
  95. .    ds ' \k:h'-(\n(.wu*8/10-*(#H)''h"|\n:u"
  96. .    ds ` \k:h'-(\n(.wu*8/10-*(#H)'`h'|\n:u'
  97. .    ds ^ \k:h'-(\n(.wu*10/11-*(#H)'^h'|\n:u'
  98. .    ds , \k:h'-(\n(.wu*8/10)',h'|\n:u'
  99. .    ds ~ \k:h'-(\n(.wu-*(#H-.1m)'~h'|\n:u'
  100. .    ds / \k:h'-(\n(.wu*8/10-*(#H)'z(slh'|\n:u'
  101. .}
  102. .    " troff and (daisy-wheel) nroff accents
  103. .ds : \k:h'-(\n(.wu*8/10-*(#H+.1m+*(#F)'v'-*(#V'z.h'.2m+*(#F'.h'|\n:u'v'*(#V'
  104. .ds 8 h'*(#H'(*bh'-*(#H'
  105. .ds o \k:h'-(\n(.wu+w'(de'u-*(#H)/2u'v'-.3n'*(#[z(dev'.3n'h'|\n:u'*(#]
  106. .ds d- h'*(#H'(pdh'-w'~'u'v'-.25m'f2(hyfPv'.25m'h'-*(#H'
  107. .ds D- D\k:h'-w'D'u'v'-.11m'z(hyv'.11m'h'|\n:u'
  108. .ds th *(#[v'.3m's+1Is-1v'-.3m'h'-(w'I'u*2/3)'s-1os+1*(#]
  109. .ds Th *(#[s+2Is-2h'-w'I'u*3/5'v'-.3m'ov'.3m'*(#]
  110. .ds ae ah'-(w'a'u*4/10)'e
  111. .ds Ae Ah'-(w'A'u*4/10)'E
  112. .    " corrections for vroff
  113. .if v .ds ~ \k:h'-(\n(.wu*9/10-*(#H)'s-2u~ds+2h'|\n:u'
  114. .if v .ds ^ \k:h'-(\n(.wu*10/11-*(#H)'v'-.4m'^v'.4m'h'|\n:u'
  115. .    " for low resolution devices (crt and lpr)
  116. .if n(.H>23 .if n(.V>19 
  117. {
  118. .    ds : e
  119. .    ds 8 ss
  120. .    ds o a
  121. .    ds d- dh'-1'(ga
  122. .    ds D- Dh'-1'(hy
  123. .    ds th o'bp'
  124. .    ds Th o'LP'
  125. .    ds ae ae
  126. .    ds Ae AE
  127. .}
  128. .rm #[ #] #H #V #F C
  129. ." ========================================================================
  130. ."
  131. .IX Title "CPP 1"
  132. .TH CPP 1 "2005-05-19" "gcc-3.4.4" "GNU"
  133. .SH "NAME"
  134. cpp - The C Preprocessor
  135. .SH "SYNOPSIS"
  136. .IX Header "SYNOPSIS"
  137. cpp [fB-DfRfImacrofR[=fIdefnfR]...] [fB-UfRfImacrofR]
  138.     [fB-IfRfIdirfR...] [fB-WfRfIwarnfR...]
  139.     [fB-MfR|fB-MMfR] [fB-MGfR] [fB-MFfR fIfilenamefR]
  140.     [fB-MPfR] [fB-MQfR fItargetfR...]
  141.     [fB-MTfR fItargetfR...]
  142.     [fB-PfR] [fB-fno-working-directoryfR]
  143.     [fB-xfR fIlanguagefR] [fB-std=fRfIstandardfR]
  144.     fIinfilefR fIoutfilefR
  145. .PP
  146. Only the most useful options are listed here; see below for the remainder.
  147. .SH "DESCRIPTION"
  148. .IX Header "DESCRIPTION"
  149. The C preprocessor, often known as fIcppfR, is a fImacro processorfR
  150. that is used automatically by the C compiler to transform your program
  151. before compilation.  It is called a macro processor because it allows
  152. you to define fImacrosfR, which are brief abbreviations for longer
  153. constructs.
  154. .PP
  155. The C preprocessor is intended to be used only with C, *(C+, and
  156. Objective-C source code.  In the past, it has been abused as a general
  157. text processor.  It will choke on input which does not obey C's lexical
  158. rules.  For example, apostrophes will be interpreted as the beginning of
  159. character constants, and cause errors.  Also, you cannot rely on it
  160. preserving characteristics of the input which are not significant to
  161. C-family languages.  If a Makefile is preprocessed, all the hard tabs
  162. will be removed, and the Makefile will not work.
  163. .PP
  164. Having said that, you can often get away with using cpp on things which
  165. are not C.  Other Algol-ish programming languages are often safe
  166. (Pascal, Ada, etc.) So is assembly, with caution.  fB-traditional-cppfR
  167. mode preserves more white space, and is otherwise more permissive.  Many
  168. of the problems can be avoided by writing C or *(C+ style comments
  169. instead of native language comments, and keeping macros simple.
  170. .PP
  171. Wherever possible, you should use a preprocessor geared to the language
  172. you are writing in.  Modern versions of the s-1GNUs0 assembler have macro
  173. facilities.  Most high level programming languages have their own
  174. conditional compilation and inclusion mechanism.  If all else fails,
  175. try a true general text processor, such as s-1GNUs0 M4.
  176. .PP
  177. C preprocessors vary in some details.  This manual discusses the s-1GNUs0 C
  178. preprocessor, which provides a small superset of the features of s-1ISOs0
  179. Standard C.  In its default mode, the s-1GNUs0 C preprocessor does not do a
  180. few things required by the standard.  These are features which are
  181. rarely, if ever, used, and may cause surprising changes to the meaning
  182. of a program which does not expect them.  To get strict s-1ISOs0 Standard C,
  183. you should use the fB-std=c89fR or fB-std=c99fR options, depending
  184. on which version of the standard you want.  To get all the mandatory
  185. diagnostics, you must also use fB-pedanticfR.  
  186. .PP
  187. This manual describes the behavior of the s-1ISOs0 preprocessor.  To
  188. minimize gratuitous differences, where the s-1ISOs0 preprocessor's
  189. behavior does not conflict with traditional semantics, the
  190. traditional preprocessor should behave the same way.  The various
  191. differences that do exist are detailed in the section fBTraditional
  192. ModefR.
  193. .PP
  194. For clarity, unless noted otherwise, references to fBs-1CPPs0fR in this
  195. manual refer to s-1GNUs0 s-1CPPs0.
  196. .SH "OPTIONS"
  197. .IX Header "OPTIONS"
  198. The C preprocessor expects two file names as arguments, fIinfilefR and
  199. &fIoutfilefR.  The preprocessor reads fIinfilefR together with any
  200. other files it specifies with fB#includefR.  All the output generated
  201. by the combined input files is written in fIoutfilefR.
  202. .PP
  203. Either fIinfilefR or fIoutfilefR may be fB-fR, which as
  204. &fIinfilefR means to read from standard input and as fIoutfilefR
  205. means to write to standard output.  Also, if either file is omitted, it
  206. means the same as if fB-fR had been specified for that file.
  207. .PP
  208. Unless otherwise noted, or the option ends in fB=fR, all options
  209. which take an argument may have that argument appear either immediately
  210. after the option, or with a space between option and argument:
  211. &fB-IfoofR and fB-I foofR have the same effect.
  212. .PP
  213. Many options have multi-letter names; therefore multiple single-letter
  214. options may fInotfR be grouped: fB-dMfR is very different from
  215. &fB-d -MfR.
  216. .IP "fB-DfR fInamefR" 4
  217. .IX Item "-D name"
  218. Predefine fInamefR as a macro, with definition f(CW1fR.
  219. .IP "fB-DfR fInamefRfB=fRfIdefinitionfR" 4
  220. .IX Item "-D name=definition"
  221. Predefine fInamefR as a macro, with definition fIdefinitionfR.
  222. The contents of fIdefinitionfR are tokenized and processed as if
  223. they appeared during translation phase three in a fB#definefR
  224. directive.  In particular, the definition will be truncated by
  225. embedded newline characters.
  226. .Sp
  227. If you are invoking the preprocessor from a shell or shell-like
  228. program you may need to use the shell's quoting syntax to protect
  229. characters such as spaces that have a meaning in the shell syntax.
  230. .Sp
  231. If you wish to define a function-like macro on the command line, write
  232. its argument list with surrounding parentheses before the equals sign
  233. (if any).  Parentheses are meaningful to most shells, so you will need
  234. to quote the option.  With fBshfR and fBcshfR,
  235. &fB-D'fRfInamefRfB(fRfIargs...fRfB)=fRfIdefinitionfRfB'fR works.
  236. .Sp
  237. &fB-DfR and fB-UfR options are processed in the order they
  238. are given on the command line.  All fB-imacrosfR fIfilefR and
  239. &fB-includefR fIfilefR options are processed after all
  240. &fB-DfR and fB-UfR options.
  241. .IP "fB-UfR fInamefR" 4
  242. .IX Item "-U name"
  243. Cancel any previous definition of fInamefR, either built in or
  244. provided with a fB-DfR option.
  245. .IP "fB-undeffR" 4
  246. .IX Item "-undef"
  247. Do not predefine any system-specific or GCC-specific macros.  The
  248. standard predefined macros remain defined.
  249. .IP "fB-IfR fIdirfR" 4
  250. .IX Item "-I dir"
  251. Add the directory fIdirfR to the list of directories to be searched
  252. for header files.
  253. .Sp
  254. Directories named by fB-IfR are searched before the standard
  255. system include directories.  If the directory fIdirfR is a standard
  256. system include directory, the option is ignored to ensure that the
  257. default search order for system directories and the special treatment
  258. of system headers are not defeated
  259. &.
  260. .IP "fB-ofR fIfilefR" 4
  261. .IX Item "-o file"
  262. Write output to fIfilefR.  This is the same as specifying fIfilefR
  263. as the second non-option argument to fBcppfR.  fBgccfR has a
  264. different interpretation of a second non-option argument, so you must
  265. use fB-ofR to specify the output file.
  266. .IP "fB-WallfR" 4
  267. .IX Item "-Wall"
  268. Turns on all optional warnings which are desirable for normal code.
  269. At present this is fB-WcommentfR, fB-WtrigraphsfR,
  270. &fB-WmulticharfR and a warning about integer promotion causing a
  271. change of sign in f(CW*(C`#if*(C'fR expressions.  Note that many of the
  272. preprocessor's warnings are on by default and have no options to
  273. control them.
  274. .IP "fB-WcommentfR" 4
  275. .IX Item "-Wcomment"
  276. .PD 0
  277. .IP "fB-WcommentsfR" 4
  278. .IX Item "-Wcomments"
  279. .PD
  280. Warn whenever a comment-start sequence fB/*fR appears in a fB/*fR
  281. comment, or whenever a backslash-newline appears in a fB//fR comment.
  282. (Both forms have the same effect.)
  283. .IP "fB-WtrigraphsfR" 4
  284. .IX Item "-Wtrigraphs"
  285. @anchor{Wtrigraphs}
  286. Most trigraphs in comments cannot affect the meaning of the program.
  287. However, a trigraph that would form an escaped newline (fB??/fR at
  288. the end of a line) can, by changing where the comment begins or ends.
  289. Therefore, only trigraphs that would form escaped newlines produce
  290. warnings inside a comment.
  291. .Sp
  292. This option is implied by fB-WallfR.  If fB-WallfR is not
  293. given, this option is still enabled unless trigraphs are enabled.  To
  294. get trigraph conversion without warnings, but get the other
  295. &fB-WallfR warnings, use fB-trigraphs -Wall -Wno-trigraphsfR.
  296. .IP "fB-WtraditionalfR" 4
  297. .IX Item "-Wtraditional"
  298. Warn about certain constructs that behave differently in traditional and
  299. &s-1ISOs0 C.  Also warn about s-1ISOs0 C constructs that have no traditional C
  300. equivalent, and problematic constructs which should be avoided.
  301. .IP "fB-WimportfR" 4
  302. .IX Item "-Wimport"
  303. Warn the first time fB#importfR is used.
  304. .IP "fB-WundeffR" 4
  305. .IX Item "-Wundef"
  306. Warn whenever an identifier which is not a macro is encountered in an
  307. &fB#iffR directive, outside of fBdefinedfR.  Such identifiers are
  308. replaced with zero.
  309. .IP "fB-Wunused-macrosfR" 4
  310. .IX Item "-Wunused-macros"
  311. Warn about macros defined in the main file that are unused.  A macro
  312. is fIusedfR if it is expanded or tested for existence at least once.
  313. The preprocessor will also warn if the macro has not been used at the
  314. time it is redefined or undefined.
  315. .Sp
  316. Built-in macros, macros defined on the command line, and macros
  317. defined in include files are not warned about.
  318. .Sp
  319. &fBNote:fR If a macro is actually used, but only used in skipped
  320. conditional blocks, then s-1CPPs0 will report it as unused.  To avoid the
  321. warning in such a case, you might improve the scope of the macro's
  322. definition by, for example, moving it into the first skipped block.
  323. Alternatively, you could provide a dummy use with something like:
  324. .Sp
  325. .Vb 2
  326. &        #if defined the_macro_causing_the_warning
  327. &        #endif
  328. .Ve
  329. .IP "fB-Wendif-labelsfR" 4
  330. .IX Item "-Wendif-labels"
  331. Warn whenever an fB#elsefR or an fB#endiffR are followed by text.
  332. This usually happens in code of the form
  333. .Sp
  334. .Vb 5
  335. &        #if FOO
  336. &        ...
  337. &        #else FOO
  338. &        ...
  339. &        #endif FOO
  340. .Ve
  341. .Sp
  342. The second and third f(CW*(C`FOO*(C'fR should be in comments, but often are not
  343. in older programs.  This warning is on by default.
  344. .IP "fB-WerrorfR" 4
  345. .IX Item "-Werror"
  346. Make all warnings into hard errors.  Source code which triggers warnings
  347. will be rejected.
  348. .IP "fB-Wsystem-headersfR" 4
  349. .IX Item "-Wsystem-headers"
  350. Issue warnings for code in system headers.  These are normally unhelpful
  351. in finding bugs in your own code, therefore suppressed.  If you are
  352. responsible for the system library, you may want to see them.
  353. .IP "fB-wfR" 4
  354. .IX Item "-w"
  355. Suppress all warnings, including those which s-1GNUs0 s-1CPPs0 issues by default.
  356. .IP "fB-pedanticfR" 4
  357. .IX Item "-pedantic"
  358. Issue all the mandatory diagnostics listed in the C standard.  Some of
  359. them are left out by default, since they trigger frequently on harmless
  360. code.
  361. .IP "fB-pedantic-errorsfR" 4
  362. .IX Item "-pedantic-errors"
  363. Issue all the mandatory diagnostics, and make all mandatory diagnostics
  364. into errors.  This includes mandatory diagnostics that s-1GCCs0 issues
  365. without fB-pedanticfR but treats as warnings.
  366. .IP "fB-MfR" 4
  367. .IX Item "-M"
  368. Instead of outputting the result of preprocessing, output a rule
  369. suitable for fBmakefR describing the dependencies of the main
  370. source file.  The preprocessor outputs one fBmakefR rule containing
  371. the object file name for that source file, a colon, and the names of all
  372. the included files, including those coming from fB-includefR or
  373. &fB-imacrosfR command line options.
  374. .Sp
  375. Unless specified explicitly (with fB-MTfR or fB-MQfR), the
  376. object file name consists of the basename of the source file with any
  377. suffix replaced with object file suffix.  If there are many included
  378. files then the rule is split into several lines using fBefR-newline.
  379. The rule has no commands.
  380. .Sp
  381. This option does not suppress the preprocessor's debug output, such as
  382. &fB-dMfR.  To avoid mixing such debug output with the dependency
  383. rules you should explicitly specify the dependency output file with
  384. &fB-MFfR, or use an environment variable like
  385. &fBs-1DEPENDENCIES_OUTPUTs0fR.  Debug output
  386. will still be sent to the regular output stream as normal.
  387. .Sp
  388. Passing fB-MfR to the driver implies fB-EfR, and suppresses
  389. warnings with an implicit fB-wfR.
  390. .IP "fB-MMfR" 4
  391. .IX Item "-MM"
  392. Like fB-MfR but do not mention header files that are found in
  393. system header directories, nor header files that are included,
  394. directly or indirectly, from such a header.
  395. .Sp
  396. This implies that the choice of angle brackets or double quotes in an
  397. &fB#includefR directive does not in itself determine whether that
  398. header will appear in fB-MMfR dependency output.  This is a
  399. slight change in semantics from s-1GCCs0 versions 3.0 and earlier.
  400. .Sp
  401. @anchor{dashMF}
  402. .IP "fB-MFfR fIfilefR" 4
  403. .IX Item "-MF file"
  404. When used with fB-MfR or fB-MMfR, specifies a
  405. file to write the dependencies to.  If no fB-MFfR switch is given
  406. the preprocessor sends the rules to the same place it would have sent
  407. preprocessed output.
  408. .Sp
  409. When used with the driver options fB-MDfR or fB-MMDfR,
  410. &fB-MFfR overrides the default dependency output file.
  411. .IP "fB-MGfR" 4
  412. .IX Item "-MG"
  413. In conjunction with an option such as fB-MfR requesting
  414. dependency generation, fB-MGfR assumes missing header files are
  415. generated files and adds them to the dependency list without raising
  416. an error.  The dependency filename is taken directly from the
  417. &f(CW*(C`#include*(C'fR directive without prepending any path.  fB-MGfR
  418. also suppresses preprocessed output, as a missing header file renders
  419. this useless.
  420. .Sp
  421. This feature is used in automatic updating of makefiles.
  422. .IP "fB-MPfR" 4
  423. .IX Item "-MP"
  424. This option instructs s-1CPPs0 to add a phony target for each dependency
  425. other than the main file, causing each to depend on nothing.  These
  426. dummy rules work around errors fBmakefR gives if you remove header
  427. files without updating the fIMakefilefR to match.
  428. .Sp
  429. This is typical output:
  430. .Sp
  431. .Vb 1
  432. &        test.o: test.c test.h
  433. .Ve
  434. .Sp
  435. .Vb 1
  436. &        test.h:
  437. .Ve
  438. .IP "fB-MTfR fItargetfR" 4
  439. .IX Item "-MT target"
  440. Change the target of the rule emitted by dependency generation.  By
  441. default s-1CPPs0 takes the name of the main input file, including any path,
  442. deletes any file suffix such as fB.cfR, and appends the platform's
  443. usual object suffix.  The result is the target.
  444. .Sp
  445. An fB-MTfR option will set the target to be exactly the string you
  446. specify.  If you want multiple targets, you can specify them as a single
  447. argument to fB-MTfR, or use multiple fB-MTfR options.
  448. .Sp
  449. For example, fB-MT '$(objpfx)foo.o'fR might give
  450. .Sp
  451. .Vb 1
  452. &        $(objpfx)foo.o: foo.c
  453. .Ve
  454. .IP "fB-MQfR fItargetfR" 4
  455. .IX Item "-MQ target"
  456. Same as fB-MTfR, but it quotes any characters which are special to
  457. Make.  fB-MQ '$(objpfx)foo.o'fR gives
  458. .Sp
  459. .Vb 1
  460. &        $$(objpfx)foo.o: foo.c
  461. .Ve
  462. .Sp
  463. The default target is automatically quoted, as if it were given with
  464. &fB-MQfR.
  465. .IP "fB-MDfR" 4
  466. .IX Item "-MD"
  467. &fB-MDfR is equivalent to fB-M -MFfR fIfilefR, except that
  468. &fB-EfR is not implied.  The driver determines fIfilefR based on
  469. whether an fB-ofR option is given.  If it is, the driver uses its
  470. argument but with a suffix of fI.dfR, otherwise it take the
  471. basename of the input file and applies a fI.dfR suffix.
  472. .Sp
  473. If fB-MDfR is used in conjunction with fB-EfR, any
  474. &fB-ofR switch is understood to specify the dependency output file
  475. (but f(CW@pxreffR{dashMF,,-MF}), but if used without fB-EfR, each fB-ofR
  476. is understood to specify a target object file.
  477. .Sp
  478. Since fB-EfR is not implied, fB-MDfR can be used to generate
  479. a dependency output file as a side-effect of the compilation process.
  480. .IP "fB-MMDfR" 4
  481. .IX Item "-MMD"
  482. Like fB-MDfR except mention only user header files, not system
  483. &-header files.
  484. .IP "fB-x cfR" 4
  485. .IX Item "-x c"
  486. .PD 0
  487. .IP "fB-x c++fR" 4
  488. .IX Item "-x c++"
  489. .IP "fB-x objective-cfR" 4
  490. .IX Item "-x objective-c"
  491. .IP "fB-x assembler-with-cppfR" 4
  492. .IX Item "-x assembler-with-cpp"
  493. .PD
  494. Specify the source language: C, *(C+, Objective-C, or assembly.  This has
  495. nothing to do with standards conformance or extensions; it merely
  496. selects which base syntax to expect.  If you give none of these options,
  497. cpp will deduce the language from the extension of the source file:
  498. &fB.cfR, fB.ccfR, fB.mfR, or fB.SfR.  Some other common
  499. extensions for *(C+ and assembly are also recognized.  If cpp does not
  500. recognize the extension, it will treat the file as C; this is the most
  501. generic mode.
  502. .Sp
  503. &fBNote:fR Previous versions of cpp accepted a fB-langfR option
  504. which selected both the language and the standards conformance level.
  505. This option has been removed, because it conflicts with the fB-lfR
  506. option.
  507. .IP "fB-std=fRfIstandardfR" 4
  508. .IX Item "-std=standard"
  509. .PD 0
  510. .IP "fB-ansifR" 4
  511. .IX Item "-ansi"
  512. .PD
  513. Specify the standard to which the code should conform.  Currently s-1CPPs0
  514. knows about C and *(C+ standards; others may be added in the future.
  515. .Sp
  516. &fIstandardfR
  517. may be one of:
  518. .RS 4
  519. .ie n .IP """iso9899:1990""" 4
  520. .el .IP "f(CWiso9899:1990fR" 4
  521. .IX Item "iso9899:1990"
  522. .PD 0
  523. .ie n .IP """c89""" 4
  524. .el .IP "f(CWc89fR" 4
  525. .IX Item "c89"
  526. .PD
  527. The s-1ISOs0 C standard from 1990.  fBc89fR is the customary shorthand for
  528. this version of the standard.
  529. .Sp
  530. The fB-ansifR option is equivalent to fB-std=c89fR.
  531. .ie n .IP """iso9899:199409""" 4
  532. .el .IP "f(CWiso9899:199409fR" 4
  533. .IX Item "iso9899:199409"
  534. The 1990 C standard, as amended in 1994.
  535. .ie n .IP """iso9899:1999""" 4
  536. .el .IP "f(CWiso9899:1999fR" 4
  537. .IX Item "iso9899:1999"
  538. .PD 0
  539. .ie n .IP """c99""" 4
  540. .el .IP "f(CWc99fR" 4
  541. .IX Item "c99"
  542. .ie n .IP """iso9899:199x""" 4
  543. .el .IP "f(CWiso9899:199xfR" 4
  544. .IX Item "iso9899:199x"
  545. .ie n .IP """c9x""" 4
  546. .el .IP "f(CWc9xfR" 4
  547. .IX Item "c9x"
  548. .PD
  549. The revised s-1ISOs0 C standard, published in December 1999.  Before
  550. publication, this was known as C9X.
  551. .ie n .IP """gnu89""" 4
  552. .el .IP "f(CWgnu89fR" 4
  553. .IX Item "gnu89"
  554. The 1990 C standard plus s-1GNUs0 extensions.  This is the default.
  555. .ie n .IP """gnu99""" 4
  556. .el .IP "f(CWgnu99fR" 4
  557. .IX Item "gnu99"
  558. .PD 0
  559. .ie n .IP """gnu9x""" 4
  560. .el .IP "f(CWgnu9xfR" 4
  561. .IX Item "gnu9x"
  562. .PD
  563. The 1999 C standard plus s-1GNUs0 extensions.
  564. .ie n .IP """c++98""" 4
  565. .el .IP "f(CWc++98fR" 4
  566. .IX Item "c++98"
  567. The 1998 s-1ISOs0 *(C+ standard plus amendments.
  568. .ie n .IP """gnu++98""" 4
  569. .el .IP "f(CWgnu++98fR" 4
  570. .IX Item "gnu++98"
  571. The same as fB-std=c++98fR plus s-1GNUs0 extensions.  This is the
  572. default for *(C+ code.
  573. .RE
  574. .RS 4
  575. .RE
  576. .IP "fB-I-fR" 4
  577. .IX Item "-I-"
  578. Split the include path.  Any directories specified with fB-IfR
  579. options before fB-I-fR are searched only for headers requested with
  580. &f(CW*(C`#include "f(CIfilef(CW"*(C'fR; they are not searched for
  581. &f(CW*(C`#include <f(CIfilef(CW>*(C'fR.  If additional directories are
  582. specified with fB-IfR options after the fB-I-fR, those
  583. directories are searched for all fB#includefR directives.
  584. .Sp
  585. In addition, fB-I-fR inhibits the use of the directory of the current
  586. file directory as the first search directory for f(CW*(C`#include "f(CIfilef(CW"*(C'fR.
  587. .IP "fB-nostdincfR" 4
  588. .IX Item "-nostdinc"
  589. Do not search the standard system directories for header files.
  590. Only the directories you have specified with fB-IfR options
  591. (and the directory of the current file, if appropriate) are searched.
  592. .IP "fB-nostdinc++fR" 4
  593. .IX Item "-nostdinc++"
  594. Do not search for header files in the *(C+-specific standard directories,
  595. but do still search the other standard directories.  (This option is
  596. used when building the *(C+ library.)
  597. .IP "fB-includefR fIfilefR" 4
  598. .IX Item "-include file"
  599. Process fIfilefR as if f(CW*(C`#include "file"*(C'fR appeared as the first
  600. line of the primary source file.  However, the first directory searched
  601. for fIfilefR is the preprocessor's working directory fIinstead offR
  602. the directory containing the main source file.  If not found there, it
  603. is searched for in the remainder of the f(CW*(C`#include "..."*(C'fR search
  604. chain as normal.
  605. .Sp
  606. If multiple fB-includefR options are given, the files are included
  607. in the order they appear on the command line.
  608. .IP "fB-imacrosfR fIfilefR" 4
  609. .IX Item "-imacros file"
  610. Exactly like fB-includefR, except that any output produced by
  611. scanning fIfilefR is thrown away.  Macros it defines remain defined.
  612. This allows you to acquire all the macros from a header without also
  613. processing its declarations.
  614. .Sp
  615. All files specified by fB-imacrosfR are processed before all files
  616. specified by fB-includefR.
  617. .IP "fB-idirafterfR fIdirfR" 4
  618. .IX Item "-idirafter dir"
  619. Search fIdirfR for header files, but do it fIafterfR all
  620. directories specified with fB-IfR and the standard system directories
  621. have been exhausted.  fIdirfR is treated as a system include directory.
  622. .IP "fB-iprefixfR fIprefixfR" 4
  623. .IX Item "-iprefix prefix"
  624. Specify fIprefixfR as the prefix for subsequent fB-iwithprefixfR
  625. options.  If the prefix represents a directory, you should include the
  626. final fB/fR.
  627. .IP "fB-iwithprefixfR fIdirfR" 4
  628. .IX Item "-iwithprefix dir"
  629. .PD 0
  630. .IP "fB-iwithprefixbeforefR fIdirfR" 4
  631. .IX Item "-iwithprefixbefore dir"
  632. .PD
  633. Append fIdirfR to the prefix specified previously with
  634. &fB-iprefixfR, and add the resulting directory to the include search
  635. path.  fB-iwithprefixbeforefR puts it in the same place fB-IfR
  636. would; fB-iwithprefixfR puts it where fB-idirafterfR would.
  637. .IP "fB-isystemfR fIdirfR" 4
  638. .IX Item "-isystem dir"
  639. Search fIdirfR for header files, after all directories specified by
  640. &fB-IfR but before the standard system directories.  Mark it
  641. as a system directory, so that it gets the same special treatment as
  642. is applied to the standard system directories.
  643. .IP "fB-fdollars-in-identifiersfR" 4
  644. .IX Item "-fdollars-in-identifiers"
  645. @anchor{fdollars-in-identifiers}
  646. Accept fB$fR in identifiers.
  647. .IP "fB-fpreprocessedfR" 4
  648. .IX Item "-fpreprocessed"
  649. Indicate to the preprocessor that the input file has already been
  650. preprocessed.  This suppresses things like macro expansion, trigraph
  651. conversion, escaped newline splicing, and processing of most directives.
  652. The preprocessor still recognizes and removes comments, so that you can
  653. pass a file preprocessed with fB-CfR to the compiler without
  654. problems.  In this mode the integrated preprocessor is little more than
  655. a tokenizer for the front ends.
  656. .Sp
  657. &fB-fpreprocessedfR is implicit if the input file has one of the
  658. extensions fB.ifR, fB.iifR or fB.mifR.  These are the
  659. extensions that s-1GCCs0 uses for preprocessed files created by
  660. &fB-save-tempsfR.
  661. .IP "fB-ftabstop=fRfIwidthfR" 4
  662. .IX Item "-ftabstop=width"
  663. Set the distance between tab stops.  This helps the preprocessor report
  664. correct column numbers in warnings or errors, even if tabs appear on the
  665. line.  If the value is less than 1 or greater than 100, the option is
  666. ignored.  The default is 8.
  667. .IP "fB-fexec-charset=fRfIcharsetfR" 4
  668. .IX Item "-fexec-charset=charset"
  669. Set the execution character set, used for string and character
  670. constants.  The default is s-1UTF-8s0.  fIcharsetfR can be any encoding
  671. supported by the system's f(CW*(C`iconv*(C'fR library routine.
  672. .IP "fB-fwide-exec-charset=fRfIcharsetfR" 4
  673. .IX Item "-fwide-exec-charset=charset"
  674. Set the wide execution character set, used for wide string and
  675. character constants.  The default is s-1UTF-32s0 or s-1UTF-16s0, whichever
  676. corresponds to the width of f(CW*(C`wchar_t*(C'fR.  As with
  677. &fB-ftarget-charsetfR, fIcharsetfR can be any encoding supported
  678. by the system's f(CW*(C`iconv*(C'fR library routine; however, you will have
  679. problems with encodings that do not fit exactly in f(CW*(C`wchar_t*(C'fR.
  680. .IP "fB-finput-charset=fRfIcharsetfR" 4
  681. .IX Item "-finput-charset=charset"
  682. Set the input character set, used for translation from the character
  683. set of the input file to the source character set used by s-1GCCs0. If the
  684. locale does not specify, or s-1GCCs0 cannot get this information from the
  685. locale, the default is s-1UTF-8s0. This can be overridden by either the locale
  686. or this command line option. Currently the command line option takes
  687. precedence if there's a conflict. fIcharsetfR can be any encoding
  688. supported by the system's f(CW*(C`iconv*(C'fR library routine.
  689. .IP "fB-fworking-directoryfR" 4
  690. .IX Item "-fworking-directory"
  691. Enable generation of linemarkers in the preprocessor output that will
  692. let the compiler know the current working directory at the time of
  693. preprocessing.  When this option is enabled, the preprocessor will
  694. emit, after the initial linemarker, a second linemarker with the
  695. current working directory followed by two slashes.  s-1GCCs0 will use this
  696. directory, when it's present in the preprocessed input, as the
  697. directory emitted as the current working directory in some debugging
  698. information formats.  This option is implicitly enabled if debugging
  699. information is enabled, but this can be inhibited with the negated
  700. form fB-fno-working-directoryfR.  If the fB-PfR flag is
  701. present in the command line, this option has no effect, since no
  702. &f(CW*(C`#line*(C'fR directives are emitted whatsoever.
  703. .IP "fB-fno-show-columnfR" 4
  704. .IX Item "-fno-show-column"
  705. Do not print column numbers in diagnostics.  This may be necessary if
  706. diagnostics are being scanned by a program that does not understand the
  707. column numbers, such as fBdejagnufR.
  708. .IP "fB-AfR fIpredicatefRfB=fRfIanswerfR" 4
  709. .IX Item "-A predicate=answer"
  710. Make an assertion with the predicate fIpredicatefR and answer
  711. &fIanswerfR.  This form is preferred to the older form fB-AfR
  712. &fIpredicatefRfB(fRfIanswerfRfB)fR, which is still supported, because
  713. it does not use shell special characters.
  714. .IP "fB-A -fRfIpredicatefRfB=fRfIanswerfR" 4
  715. .IX Item "-A -predicate=answer"
  716. Cancel an assertion with the predicate fIpredicatefR and answer
  717. &fIanswerfR.
  718. .IP "fB-dCHARSfR" 4
  719. .IX Item "-dCHARS"
  720. &fIs-1CHARSs0fR is a sequence of one or more of the following characters,
  721. and must not be preceded by a space.  Other characters are interpreted
  722. by the compiler proper, or reserved for future versions of s-1GCCs0, and so
  723. are silently ignored.  If you specify characters whose behavior
  724. conflicts, the result is undefined.
  725. .RS 4
  726. .IP "fBMfR" 4
  727. .IX Item "M"
  728. Instead of the normal output, generate a list of fB#definefR
  729. directives for all the macros defined during the execution of the
  730. preprocessor, including predefined macros.  This gives you a way of
  731. finding out what is predefined in your version of the preprocessor.
  732. Assuming you have no file fIfoo.hfR, the command
  733. .Sp
  734. .Vb 1
  735. &        touch foo.h; cpp -dM foo.h
  736. .Ve
  737. .Sp
  738. will show all the predefined macros.
  739. .IP "fBDfR" 4
  740. .IX Item "D"
  741. Like fBMfR except in two respects: it does fInotfR include the
  742. predefined macros, and it outputs fIbothfR the fB#definefR
  743. directives and the result of preprocessing.  Both kinds of output go to
  744. the standard output file.
  745. .IP "fBNfR" 4
  746. .IX Item "N"
  747. Like fBDfR, but emit only the macro names, not their expansions.
  748. .IP "fBIfR" 4
  749. .IX Item "I"
  750. Output fB#includefR directives in addition to the result of
  751. preprocessing.
  752. .RE
  753. .RS 4
  754. .RE
  755. .IP "fB-PfR" 4
  756. .IX Item "-P"
  757. Inhibit generation of linemarkers in the output from the preprocessor.
  758. This might be useful when running the preprocessor on something that is
  759. not C code, and will be sent to a program which might be confused by the
  760. linemarkers.
  761. .IP "fB-CfR" 4
  762. .IX Item "-C"
  763. Do not discard comments.  All comments are passed through to the output
  764. file, except for comments in processed directives, which are deleted
  765. along with the directive.
  766. .Sp
  767. You should be prepared for side effects when using fB-CfR; it
  768. causes the preprocessor to treat comments as tokens in their own right.
  769. For example, comments appearing at the start of what would be a
  770. directive line have the effect of turning that line into an ordinary
  771. source line, since the first token on the line is no longer a fB#fR.
  772. .IP "fB-CCfR" 4
  773. .IX Item "-CC"
  774. Do not discard comments, including during macro expansion.  This is
  775. like fB-CfR, except that comments contained within macros are
  776. also passed through to the output file where the macro is expanded.
  777. .Sp
  778. In addition to the side-effects of the fB-CfR option, the
  779. &fB-CCfR option causes all *(C+-style comments inside a macro
  780. to be converted to C-style comments.  This is to prevent later use
  781. of that macro from inadvertently commenting out the remainder of
  782. the source line.
  783. .Sp
  784. The fB-CCfR option is generally used to support lint comments.
  785. .IP "fB-traditional-cppfR" 4
  786. .IX Item "-traditional-cpp"
  787. Try to imitate the behavior of old-fashioned C preprocessors, as
  788. opposed to s-1ISOs0 C preprocessors.
  789. .IP "fB-trigraphsfR" 4
  790. .IX Item "-trigraphs"
  791. Process trigraph sequences.
  792. .IP "fB-remapfR" 4
  793. .IX Item "-remap"
  794. Enable special code to work around file systems which only permit very
  795. short file names, such as s-1MS-DOSs0.
  796. .IP "fB--helpfR" 4
  797. .IX Item "--help"
  798. .PD 0
  799. .IP "fB--target-helpfR" 4
  800. .IX Item "--target-help"
  801. .PD
  802. Print text describing all the command line options instead of
  803. preprocessing anything.
  804. .IP "fB-vfR" 4
  805. .IX Item "-v"
  806. Verbose mode.  Print out s-1GNUs0 s-1CPPs0's version number at the beginning of
  807. execution, and report the final form of the include path.
  808. .IP "fB-HfR" 4
  809. .IX Item "-H"
  810. Print the name of each header file used, in addition to other normal
  811. activities.  Each name is indented to show how deep in the
  812. &fB#includefR stack it is.  Precompiled header files are also
  813. printed, even if they are found to be invalid; an invalid precompiled
  814. header file is printed with fB...xfR and a valid one with fB...!fR .
  815. .IP "fB-versionfR" 4
  816. .IX Item "-version"
  817. .PD 0
  818. .IP "fB--versionfR" 4
  819. .IX Item "--version"
  820. .PD
  821. Print out s-1GNUs0 s-1CPPs0's version number.  With one dash, proceed to
  822. preprocess as normal.  With two dashes, exit immediately.
  823. .SH "ENVIRONMENT"
  824. .IX Header "ENVIRONMENT"
  825. This section describes the environment variables that affect how s-1CPPs0
  826. operates.  You can use them to specify directories or prefixes to use
  827. when searching for include files, or to control dependency output.
  828. .PP
  829. Note that you can also specify places to search using options such as
  830. &fB-IfR, and control dependency output with options like
  831. &fB-MfR.  These take precedence over
  832. environment variables, which in turn take precedence over the
  833. configuration of s-1GCCs0.
  834. .IP "fBs-1CPATHs0fR" 4
  835. .IX Item "CPATH"
  836. .PD 0
  837. .IP "fBC_INCLUDE_PATHfR" 4
  838. .IX Item "C_INCLUDE_PATH"
  839. .IP "fBs-1CPLUS_INCLUDE_PATHs0fR" 4
  840. .IX Item "CPLUS_INCLUDE_PATH"
  841. .IP "fBs-1OBJC_INCLUDE_PATHs0fR" 4
  842. .IX Item "OBJC_INCLUDE_PATH"
  843. .PD
  844. Each variable's value is a list of directories separated by a special
  845. character, much like fBs-1PATHs0fR, in which to look for header files.
  846. The special character, f(CW*(C`PATH_SEPARATOR*(C'fR, is target-dependent and
  847. determined at s-1GCCs0 build time.  For Microsoft Windows-based targets it is a
  848. semicolon, and for almost all other targets it is a colon.
  849. .Sp
  850. &fBs-1CPATHs0fR specifies a list of directories to be searched as if
  851. specified with fB-IfR, but after any paths given with fB-IfR
  852. options on the command line.  This environment variable is used
  853. regardless of which language is being preprocessed.
  854. .Sp
  855. The remaining environment variables apply only when preprocessing the
  856. particular language indicated.  Each specifies a list of directories
  857. to be searched as if specified with fB-isystemfR, but after any
  858. paths given with fB-isystemfR options on the command line.
  859. .Sp
  860. In all these variables, an empty element instructs the compiler to
  861. search its current working directory.  Empty elements can appear at the
  862. beginning or end of a path.  For instance, if the value of
  863. &fBs-1CPATHs0fR is f(CW*(C`:/special/include*(C'fR, that has the same
  864. effect as fB-I. -I/special/includefR.
  865. .IP "fBs-1DEPENDENCIES_OUTPUTs0fR" 4
  866. .IX Item "DEPENDENCIES_OUTPUT"
  867. If this variable is set, its value specifies how to output
  868. dependencies for Make based on the non-system header files processed
  869. by the compiler.  System header files are ignored in the dependency
  870. output.
  871. .Sp
  872. The value of fBs-1DEPENDENCIES_OUTPUTs0fR can be just a file name, in
  873. which case the Make rules are written to that file, guessing the target
  874. name from the source file name.  Or the value can have the form
  875. &fIfilefRfB fRfItargetfR, in which case the rules are written to
  876. file fIfilefR using fItargetfR as the target name.
  877. .Sp
  878. In other words, this environment variable is equivalent to combining
  879. the options fB-MMfR and fB-MFfR,
  880. with an optional fB-MTfR switch too.
  881. .IP "fBs-1SUNPRO_DEPENDENCIESs0fR" 4
  882. .IX Item "SUNPRO_DEPENDENCIES"
  883. This variable is the same as fBs-1DEPENDENCIES_OUTPUTs0fR (see above),
  884. except that system header files are not ignored, so it implies
  885. &fB-MfR rather than fB-MMfR.  However, the dependence on the
  886. main input file is omitted.
  887. .SH "SEE ALSO"
  888. .IX Header "SEE ALSO"
  889. &fIgplfR|(7), fIgfdlfR|(7), fIfsf-fundingfR|(7),
  890. &fIgccfR|(1), fIasfR|(1), fIldfR|(1), and the Info entries for fIcppfR, fIgccfR, and
  891. &fIbinutilsfR.
  892. .SH "COPYRIGHT"
  893. .IX Header "COPYRIGHT"
  894. Copyright (c) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
  895. 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
  896. Free Software Foundation, Inc.
  897. .PP
  898. Permission is granted to copy, distribute and/or modify this document
  899. under the terms of the s-1GNUs0 Free Documentation License, Version 1.1 or
  900. any later version published by the Free Software Foundation.  A copy of
  901. the license is included in the
  902. man page fIgfdlfR|(7).
  903. This manual contains no Invariant Sections.  The Front-Cover Texts are
  904. (a) (see below), and the Back-Cover Texts are (b) (see below).
  905. .PP
  906. (a) The s-1FSFs0's Front-Cover Text is:
  907. .PP
  908. .Vb 1
  909. &     A GNU Manual
  910. .Ve
  911. .PP
  912. (b) The s-1FSFs0's Back-Cover Text is:
  913. .PP
  914. .Vb 3
  915. &     You have freedom to copy and modify this GNU Manual, like GNU
  916. &     software.  Copies published by the Free Software Foundation raise
  917. &     funds for GNU development.
  918. .Ve