home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / gnu / info / gcc.info-2 (.txt) < prev    next >
GNU Info File  |  1994-11-17  |  51KB  |  1,000 lines

  1. This is Info file gcc.info, produced by Makeinfo-1.55 from the input
  2. file gcc.texi.
  3.    This file documents the use and the internals of the GNU compiler.
  4.    Published by the Free Software Foundation 675 Massachusetts Avenue
  5. Cambridge, MA 02139 USA
  6.    Copyright (C) 1988, 1989, 1992, 1993, 1994 Free Software Foundation,
  7.    Permission is granted to make and distribute verbatim copies of this
  8. manual provided the copyright notice and this permission notice are
  9. preserved on all copies.
  10.    Permission is granted to copy and distribute modified versions of
  11. this manual under the conditions for verbatim copying, provided also
  12. that the sections entitled "GNU General Public License," "Funding for
  13. Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are
  14. included exactly as in the original, and provided that the entire
  15. resulting derived work is distributed under the terms of a permission
  16. notice identical to this one.
  17.    Permission is granted to copy and distribute translations of this
  18. manual into another language, under the above conditions for modified
  19. versions, except that the sections entitled "GNU General Public
  20. License," "Funding for Free Software," and "Protect Your Freedom--Fight
  21. `Look And Feel'", and this permission notice, may be included in
  22. translations approved by the Free Software Foundation instead of in the
  23. original English.
  24. File: gcc.info,  Node: Option Summary,  Next: Overall Options,  Up: Invoking GCC
  25. Option Summary
  26. ==============
  27.    Here is a summary of all the options, grouped by type.  Explanations
  28. are in the following sections.
  29. *Overall Options*
  30.      *Note Options Controlling the Kind of Output: Overall Options.
  31.           -c  -S  -E  -o FILE  -pipe  -v  -x LANGUAGE
  32. *C Language Options*
  33.      *Note Options Controlling C Dialect: C Dialect Options.
  34.           -ansi  -fallow-single-precision -fcond-mismatch  -fno-asm
  35.           -fno-builtin  -fsigned-bitfields  -fsigned-char
  36.           -funsigned-bitfields  -funsigned-char  -fwritable-strings
  37.           -traditional  -traditional-cpp  -trigraphs
  38. *C++ Language Options*
  39.      *Note Options Controlling C++ Dialect: C++ Dialect Options.
  40.           -fall-virtual  -fdollars-in-identifiers  -felide-constructors
  41.           -fenum-int-equiv -fexternal-templates  -fhandle-signatures
  42.           -fmemoize-lookups  -fno-default-inline  -fno-strict-prototype
  43.           -fnonnull-objects  -fthis-is-variable  -nostdinc++
  44.           -traditional  +eN
  45. *Warning Options*
  46.      *Note Options to Request or Suppress Warnings: Warning Options.
  47.           -fsyntax-only  -pedantic  -pedantic-errors
  48.           -w  -W  -Wall  -Waggregate-return  -Wbad-function-cast
  49.           -Wcast-align -Wcast-qual  -Wchar-subscript  -Wcomment
  50.           -Wconversion -Wenum-clash  -Werror  -Wformat
  51.           -Wid-clash-LEN  -Wimplicit  -Wimport  -Winline
  52.           -Wlarger-than-LEN  -Wmissing-declarations
  53.           -Wmissing-prototypes  -Wnested-externs
  54.           -Wno-import  -Woverloaded-virtual -Wparentheses
  55.           -Wpointer-arith  -Wredundant-decls -Wreorder -Wreturn-type -Wshadow
  56.           -Wstrict-prototypes  -Wswitch  -Wsynth  -Wtemplate-debugging
  57.           -Wtraditional  -Wtrigraphs -Wuninitialized  -Wunused
  58.           -Wwrite-strings
  59. *Debugging Options*
  60.      *Note Options for Debugging Your Program or GCC: Debugging Options.
  61.           -a  -dLETTERS  -fpretend-float
  62.           -g  -gLEVEL -gcoff  -gdwarf  -gdwarf+
  63.           -ggdb  -gstabs  -gstabs+  -gxcoff  -gxcoff+
  64.           -p  -pg  -print-file-name=LIBRARY  -print-libgcc-file-name
  65.           -print-prog-name=PROGRAM  -save-temps
  66. *Optimization Options*
  67.      *Note Options that Control Optimization: Optimize Options.
  68.           -fcaller-saves  -fcse-follow-jumps  -fcse-skip-blocks
  69.           -fdelayed-branch   -fexpensive-optimizations
  70.           -ffast-math  -ffloat-store  -fforce-addr  -fforce-mem
  71.           -finline-functions  -fkeep-inline-functions
  72.           -fno-default-inline  -fno-defer-pop  -fno-function-cse
  73.           -fno-inline  -fno-peephole  -fomit-frame-pointer
  74.           -frerun-cse-after-loop  -fschedule-insns
  75.           -fschedule-insns2  -fstrength-reduce  -fthread-jumps
  76.           -funroll-all-loops  -funroll-loops
  77.           -O  -O0  -O1  -O2  -O3
  78. *Preprocessor Options*
  79.      *Note Options Controlling the Preprocessor: Preprocessor Options.
  80.           -AQUESTION(ANSWER)  -C  -dD  -dM  -dN
  81.           -DMACRO[=DEFN]  -E  -H
  82.           -idirafter DIR
  83.           -include FILE  -imacros FILE
  84.           -iprefix FILE  -iwithprefix DIR
  85.           -iwithprefixbefore DIR  -isystem DIR
  86.           -M  -MD  -MM  -MMD  -MG  -nostdinc  -P  -trigraphs
  87.           -undef  -UMACRO  -Wp,OPTION
  88. *Assembler Option*
  89.      *Note Passing Options to the Assembler: Assembler Options.
  90.           -Wa,OPTION
  91. *Linker Options*
  92.      *Note Options for Linking: Link Options.
  93.           OBJECT-FILE-NAME
  94.           -lLIBRARY  -nostartfiles  -nostdlib
  95.           -s  -static  -shared  -symbolic
  96.           -Wl,OPTION  -Xlinker OPTION
  97.           -u SYMBOL
  98. *Directory Options*
  99.      *Note Options for Directory Search: Directory Options.
  100.           -BPREFIX  -IDIR  -I-  -LDIR
  101. *Target Options*
  102.      *Note Target Options::.
  103.           -b MACHINE  -V VERSION
  104. *Machine Dependent Options*
  105.      *Note Hardware Models and Configurations: Submodel Options.
  106.           *M680x0 Options*
  107.           -m68000  -m68020  -m68020-40  -m68030  -m68040  -m68881
  108.           -mbitfield  -mc68000  -mc68020  -mfpa  -mnobitfield
  109.           -mrtd  -mshort  -msoft-float
  110.           
  111.           *VAX Options*
  112.           -mg  -mgnu  -munix
  113.           
  114.           *SPARC Options*
  115.           -mapp-regs  -mcypress  -mepilogue  -mflat  -mfpu  -mhard-float
  116.           -mhard-quad-float  -mno-app-regs  -mno-flat  -mno-fpu
  117.           -mno-epilogue  -mno-unaligned-doubles
  118.           -msoft-float  -msoft-quad-float
  119.           -msparclite  -msupersparc  -munaligned-doubles  -mv8
  120.           
  121.           SPARC V9 compilers support the following options
  122.           in addition to the above:
  123.           
  124.           -mmedlow  -mmedany
  125.           -mint32  -mint64  -mlong32  -mlong64
  126.           -mno-stack-bias  -mstack-bias
  127.           
  128.           *Convex Options*
  129.           -mc1  -mc2  -mc32  -mc34  -mc38
  130.           -margcount  -mnoargcount
  131.           -mlong32  -mlong64
  132.           -mvolatile-cache  -mvolatile-nocache
  133.           
  134.           *AMD29K Options*
  135.           -m29000  -m29050  -mbw  -mnbw  -mdw  -mndw
  136.           -mlarge  -mnormal  -msmall
  137.           -mkernel-registers  -mno-reuse-arg-regs
  138.           -mno-stack-check  -mno-storem-bug
  139.           -mreuse-arg-regs  -msoft-float  -mstack-check
  140.           -mstorem-bug  -muser-registers
  141.           
  142.           *ARM Options*
  143.           -mapcs -m2 -m3 -m6 -mbsd -mxopen -mno-symrename
  144.           
  145.           *M88K Options*
  146.           -m88000  -m88100  -m88110  -mbig-pic
  147.           -mcheck-zero-division  -mhandle-large-shift
  148.           -midentify-revision  -mno-check-zero-division
  149.           -mno-ocs-debug-info  -mno-ocs-frame-position
  150.           -mno-optimize-arg-area  -mno-serialize-volatile
  151.           -mno-underscores  -mocs-debug-info
  152.           -mocs-frame-position  -moptimize-arg-area
  153.           -mserialize-volatile  -mshort-data-NUM  -msvr3
  154.           -msvr4  -mtrap-large-shift  -muse-div-instruction
  155.           -mversion-03.00  -mwarn-passed-structs
  156.           
  157.           *RS/6000 Options and PowerPC*
  158.           -mcpu=CPU TYPE
  159.           -mpower -mno-power -mpower2 -pno-power2
  160.           -mpowerpc -mno-powerpc
  161.           -mpowerpc-gpopt -mno-powerpc-gpopt
  162.           -mpowerpc-gfxopt -mno-powerpc-gfxopt
  163.           -mnew-mnemonics -mno-new-mnemonics
  164.           -mfull-toc   -mminimal-toc  -mno-fop-in-toc  -mno-sum-in-toc
  165.           
  166.           *RT Options*
  167.           -mcall-lib-mul  -mfp-arg-in-fpregs  -mfp-arg-in-gregs
  168.           -mfull-fp-blocks  -mhc-struct-return  -min-line-mul
  169.           -mminimum-fp-blocks  -mnohc-struct-return
  170.           
  171.           *MIPS Options*
  172.           -mabicalls  -mcpu=CPU  TYPE  -membedded-data
  173.           -membedded-pic  -mfp32  -mfp64  -mgas  -mgp32  -mgp64
  174.           -mgpopt  -mhalf-pic  -mhard-float  -mint64 -mips1
  175.           -mips2 -mips3  -mlong64  -mlong-calls  -mmemcpy
  176.           -mmips-as  -mmips-tfile  -mno-abicalls
  177.           -mno-embedded-data  -mno-embedded-pic
  178.           -mno-gpopt  -mno-long-calls
  179.           -mno-memcpy  -mno-mips-tfile  -mno-rnames  -mno-stats
  180.           -mrnames -msoft-float
  181.           -mstats  -G  NUM  -nocpp
  182.           
  183.           *i386 Options*
  184.           -m486  -mieee-fp  -mno-486  -mno-fancy-math-387
  185.           -mno-fp-ret-in-387  -msoft-float  -msvr3-shlib
  186.           -mno-wide-multiply -mreg-alloc=LIST
  187.           
  188.           *HPPA Options*
  189.           -mdisable-fpregs  -mdisable-indexing  -mjump-in-delay
  190.           -mgas  -mlong-calls  -mno-disable-fpregs  -mno-disable-indexing
  191.           -mno-gas  -mno-jump-in-delay
  192.           -mno-long-calls  -mno-portable-runtime
  193.           -mpa-risc-1-0  -mpa-risc-1-1  -mportable-runtime
  194.           
  195.           *Intel 960 Options*
  196.           -mCPU TYPE  -masm-compat  -mclean-linkage
  197.           -mcode-align  -mcomplex-addr  -mleaf-procedures
  198.           -mic-compat  -mic2.0-compat  -mic3.0-compat
  199.           -mintel-asm  -mno-clean-linkage  -mno-code-align
  200.           -mno-complex-addr  -mno-leaf-procedures
  201.           -mno-old-align  -mno-strict-align  -mno-tail-call
  202.           -mnumerics  -mold-align  -msoft-float  -mstrict-align
  203.           -mtail-call
  204.           
  205.           *DEC Alpha Options*
  206.           -mfp-regs  -mno-fp-regs  -mno-soft-float
  207.           -msoft-float
  208.           
  209.           *Clipper Options*
  210.           -mc300 -mc400
  211.           
  212.           *H8/300 Options*
  213.           -mrelax  -mh
  214.           
  215.           *System V Options*
  216.           -Qy  -Qn  -YP,PATHS  -Ym,DIR
  217. *Code Generation Options*
  218.      *Note Options for Code Generation Conventions: Code Gen Options.
  219.           -fcall-saved-REG  -fcall-used-REG
  220.           -ffixed-REG  -finhibit-size-directive
  221.           -fno-common  -fno-ident  -fno-gnu-linker
  222.           -fpcc-struct-return  -fpic  -fPIC
  223.           -freg-struct-return  -fshared-data  -fshort-enums
  224.           -fshort-double  -fvolatile  -fvolatile-global
  225.           -fverbose-asm  +e0  +e1
  226. * Menu:
  227. * Overall Options::     Controlling the kind of output:
  228.                         an executable, object files, assembler files,
  229.                         or preprocessed source.
  230. * C Dialect Options::   Controlling the variant of C language compiled.
  231. * C++ Dialect Options:: Variations on C++.
  232. * Warning Options::     How picky should the compiler be?
  233. * Debugging Options::   Symbol tables, measurements, and debugging dumps.
  234. * Optimize Options::    How much optimization?
  235. * Preprocessor Options:: Controlling header files and macro definitions.
  236.                          Also, getting dependency information for Make.
  237. * Assembler Options::   Passing options to the assembler.
  238. * Link Options::        Specifying libraries and so on.
  239. * Directory Options::   Where to find header files and libraries.
  240.                         Where to find the compiler executable files.
  241. * Target Options::      Running a cross-compiler, or an old version of GNU CC.
  242. File: gcc.info,  Node: Overall Options,  Next: Invoking G++,  Prev: Option Summary,  Up: Invoking GCC
  243. Options Controlling the Kind of Output
  244. ======================================
  245.    Compilation can involve up to four stages: preprocessing, compilation
  246. proper, assembly and linking, always in that order.  The first three
  247. stages apply to an individual source file, and end by producing an
  248. object file; linking combines all the object files (those newly
  249. compiled, and those specified as input) into an executable file.
  250.    For any given input file, the file name suffix determines what kind
  251. of compilation is done:
  252. `FILE.c'
  253.      C source code which must be preprocessed.
  254. `FILE.i'
  255.      C source code which should not be preprocessed.
  256. `FILE.ii'
  257.      C++ source code which should not be preprocessed.
  258. `FILE.m'
  259.      Objective-C source code.  Note that you must link with the library
  260.      `libobjc.a' to make an Objective-C program work.
  261. `FILE.h'
  262.      C header file (not to be compiled or linked).
  263. `FILE.cc'
  264. `FILE.cxx'
  265. `FILE.cpp'
  266. `FILE.C'
  267.      C++ source code which must be preprocessed.  Note that in `.cxx',
  268.      the last two letters must both be literally `x'.  Likewise, `.C'
  269.      refers to a literal capital C.
  270. `FILE.s'
  271.      Assembler code.
  272. `FILE.S'
  273.      Assembler code which must be preprocessed.
  274. `OTHER'
  275.      An object file to be fed straight into linking.  Any file name
  276.      with no recognized suffix is treated this way.
  277.    You can specify the input language explicitly with the `-x' option:
  278. `-x LANGUAGE'
  279.      Specify explicitly the LANGUAGE for the following input files
  280.      (rather than letting the compiler choose a default based on the
  281.      file name suffix).  This option applies to all following input
  282.      files until the next `-x' option.  Possible values for LANGUAGE
  283.      are:
  284.           c  objective-c  c++
  285.           c-header  cpp-output  c++-cpp-output
  286.           assembler  assembler-with-cpp
  287. `-x none'
  288.      Turn off any specification of a language, so that subsequent files
  289.      are handled according to their file name suffixes (as they are if
  290.      `-x' has not been used at all).
  291.    If you only want some of the stages of compilation, you can use `-x'
  292. (or filename suffixes) to tell `gcc' where to start, and one of the
  293. options `-c', `-S', or `-E' to say where `gcc' is to stop.  Note that
  294. some combinations (for example, `-x cpp-output -E' instruct `gcc' to do
  295. nothing at all.
  296.      Compile or assemble the source files, but do not link.  The linking
  297.      stage simply is not done.  The ultimate output is in the form of an
  298.      object file for each source file.
  299.      By default, the object file name for a source file is made by
  300.      replacing the suffix `.c', `.i', `.s', etc., with `.o'.
  301.      Unrecognized input files, not requiring compilation or assembly,
  302.      are ignored.
  303.      Stop after the stage of compilation proper; do not assemble.  The
  304.      output is in the form of an assembler code file for each
  305.      non-assembler input file specified.
  306.      By default, the assembler file name for a source file is made by
  307.      replacing the suffix `.c', `.i', etc., with `.s'.
  308.      Input files that don't require compilation are ignored.
  309.      Stop after the preprocessing stage; do not run the compiler
  310.      proper.  The output is in the form of preprocessed source code,
  311.      which is sent to the standard output.
  312.      Input files which don't require preprocessing are ignored.
  313. `-o FILE'
  314.      Place output in file FILE.  This applies regardless to whatever
  315.      sort of output is being produced, whether it be an executable file,
  316.      an object file, an assembler file or preprocessed C code.
  317.      Since only one output file can be specified, it does not make
  318.      sense to use `-o' when compiling more than one input file, unless
  319.      you are producing an executable file as output.
  320.      If `-o' is not specified, the default is to put an executable file
  321.      in `a.out', the object file for `SOURCE.SUFFIX' in `SOURCE.o', its
  322.      assembler file in `SOURCE.s', and all preprocessed C source on
  323.      standard output.
  324.      Print (on standard error output) the commands executed to run the
  325.      stages of compilation.  Also print the version number of the
  326.      compiler driver program and of the preprocessor and the compiler
  327.      proper.
  328. `-pipe'
  329.      Use pipes rather than temporary files for communication between the
  330.      various stages of compilation.  This fails to work on some systems
  331.      where the assembler is unable to read from a pipe; but the GNU
  332.      assembler has no trouble.
  333. File: gcc.info,  Node: Invoking G++,  Next: C Dialect Options,  Prev: Overall Options,  Up: Invoking GCC
  334. Compiling C++ Programs
  335. ======================
  336.    C++ source files conventionally use one of the suffixes `.C', `.cc',
  337. `cpp', or `.cxx'; preprocessed C++ files use the suffix `.ii'.  GNU CC
  338. recognizes files with these names and compiles them as C++ programs
  339. even if you call the compiler the same way as for compiling C programs
  340. (usually with the name `gcc').
  341.    However, C++ programs often require class libraries as well as a
  342. compiler that understands the C++ language--and under some
  343. circumstances, you might want to compile programs from standard input,
  344. or otherwise without a suffix that flags them as C++ programs.  `g++'
  345. is a program that calls GNU CC with the default language set to C++,
  346. and automatically specifies linking against the GNU class library
  347. libg++.  (1) On many systems, the script `g++' is also installed with
  348. the name `c++'.
  349.    When you compile C++ programs, you may specify many of the same
  350. command-line options that you use for compiling programs in any
  351. language; or command-line options meaningful for C and related
  352. languages; or options that are meaningful only for C++ programs.  *Note
  353. Options Controlling C Dialect: C Dialect Options, for explanations of
  354. options for languages related to C.  *Note Options Controlling C++
  355. Dialect: C++ Dialect Options, for explanations of options that are
  356. meaningful only for C++ programs.
  357.    ---------- Footnotes ----------
  358.    (1)  Prior to release 2 of the compiler, there was a separate `g++'
  359. compiler.  That version was based on GNU CC, but not integrated with
  360. it.  Versions of `g++' with a `1.XX' version number--for example, `g++'
  361. version 1.37 or 1.42--are much less reliable than the versions
  362. integrated with GCC 2.  Moreover, combining G++ `1.XX' with a version 2
  363. GCC will simply not work.
  364. File: gcc.info,  Node: C Dialect Options,  Next: C++ Dialect Options,  Prev: Invoking G++,  Up: Invoking GCC
  365. Options Controlling C Dialect
  366. =============================
  367.    The following options control the dialect of C (or languages derived
  368. from C, such as C++ and Objective C) that the compiler accepts:
  369. `-ansi'
  370.      Support all ANSI standard C programs.
  371.      This turns off certain features of GNU C that are incompatible
  372.      with ANSI C, such as the `asm', `inline' and `typeof' keywords, and
  373.      predefined macros such as `unix' and `vax' that identify the type
  374.      of system you are using.  It also enables the undesirable and
  375.      rarely used ANSI trigraph feature, and disallows `$' as part of
  376.      identifiers.
  377.      The alternate keywords `__asm__', `__extension__', `__inline__'
  378.      and `__typeof__' continue to work despite `-ansi'.  You would not
  379.      want to use them in an ANSI C program, of course, but it is useful
  380.      to put them in header files that might be included in compilations
  381.      done with `-ansi'.  Alternate predefined macros such as `__unix__'
  382.      and `__vax__' are also available, with or without `-ansi'.
  383.      The `-ansi' option does not cause non-ANSI programs to be rejected
  384.      gratuitously.  For that, `-pedantic' is required in addition to
  385.      `-ansi'.  *Note Warning Options::.
  386.      The macro `__STRICT_ANSI__' is predefined when the `-ansi' option
  387.      is used.  Some header files may notice this macro and refrain from
  388.      declaring certain functions or defining certain macros that the
  389.      ANSI standard doesn't call for; this is to avoid interfering with
  390.      any programs that might use these names for other things.
  391.      The functions `alloca', `abort', `exit', and `_exit' are not
  392.      builtin functions when `-ansi' is used.
  393. `-fno-asm'
  394.      Do not recognize `asm', `inline' or `typeof' as a keyword.  These
  395.      words may then be used as identifiers.  You can use the keywords
  396.      `__asm__', `__inline__' and `__typeof__' instead.  `-ansi' implies
  397.      `-fno-asm'.
  398. `-fno-builtin'
  399.      Don't recognize builtin functions that do not begin with two
  400.      leading underscores.  Currently, the functions affected include
  401.      `abort', `abs', `alloca', `cos', `exit', `fabs', `ffs', `labs',
  402.      `memcmp', `memcpy', `sin', `sqrt', `strcmp', `strcpy', and
  403.      `strlen'.
  404.      GCC normally generates special code to handle certain builtin
  405.      functions more efficiently; for instance, calls to `alloca' may
  406.      become single instructions that adjust the stack directly, and
  407.      calls to `memcpy' may become inline copy loops.  The resulting
  408.      code is often both smaller and faster, but since the function
  409.      calls no longer appear as such, you cannot set a breakpoint on
  410.      those calls, nor can you change the behavior of the functions by
  411.      linking with a different library.
  412.      The `-ansi' option prevents `alloca' and `ffs' from being builtin
  413.      functions, since these functions do not have an ANSI standard
  414.      meaning.
  415. `-trigraphs'
  416.      Support ANSI C trigraphs.  You don't want to know about this
  417.      brain-damage.  The `-ansi' option implies `-trigraphs'.
  418. `-traditional'
  419.      Attempt to support some aspects of traditional C compilers.
  420.      Specifically:
  421.         * All `extern' declarations take effect globally even if they
  422.           are written inside of a function definition.  This includes
  423.           implicit declarations of functions.
  424.         * The newer keywords `typeof', `inline', `signed', `const' and
  425.           `volatile' are not recognized.  (You can still use the
  426.           alternative keywords such as `__typeof__', `__inline__', and
  427.           so on.)
  428.         * Comparisons between pointers and integers are always allowed.
  429.         * Integer types `unsigned short' and `unsigned char' promote to
  430.           `unsigned int'.
  431.         * Out-of-range floating point literals are not an error.
  432.         * Certain constructs which ANSI regards as a single invalid
  433.           preprocessing number, such as `0xe-0xd', are treated as
  434.           expressions instead.
  435.         * String "constants" are not necessarily constant; they are
  436.           stored in writable space, and identical looking constants are
  437.           allocated separately.  (This is the same as the effect of
  438.           `-fwritable-strings'.)
  439.         * All automatic variables not declared `register' are preserved
  440.           by `longjmp'.  Ordinarily, GNU C follows ANSI C: automatic
  441.           variables not declared `volatile' may be clobbered.
  442.         * The character escape sequences `\x' and `\a' evaluate as the
  443.           literal characters `x' and `a' respectively.  Without
  444.           `-traditional', `\x' is a prefix for the hexadecimal
  445.           representation of a character, and `\a' produces a bell.
  446.         * In C++ programs, assignment to `this' is permitted with
  447.           `-traditional'.  (The option `-fthis-is-variable' also has
  448.           this effect.)
  449.      You may wish to use `-fno-builtin' as well as `-traditional' if
  450.      your program uses names that are normally GNU C builtin functions
  451.      for other purposes of its own.
  452.      You cannot use `-traditional' if you include any header files that
  453.      rely on ANSI C features.  Some vendors are starting to ship
  454.      systems with ANSI C header files and you cannot use `-traditional'
  455.      on such systems to compile files that include any system headers.
  456.      In the preprocessor, comments convert to nothing at all, rather
  457.      than to a space.  This allows traditional token concatenation.
  458.      In preprocessor directive, the `#' symbol must appear as the first
  459.      character of a line.
  460.      In the preprocessor, macro arguments are recognized within string
  461.      constants in a macro definition (and their values are stringified,
  462.      though without additional quote marks, when they appear in such a
  463.      context).  The preprocessor always considers a string constant to
  464.      end at a newline.
  465.      The predefined macro `__STDC__' is not defined when you use
  466.      `-traditional', but `__GNUC__' is (since the GNU extensions which
  467.      `__GNUC__' indicates are not affected by `-traditional').  If you
  468.      need to write header files that work differently depending on
  469.      whether `-traditional' is in use, by testing both of these
  470.      predefined macros you can distinguish four situations: GNU C,
  471.      traditional GNU C, other ANSI C compilers, and other old C
  472.      compilers.  *Note Standard Predefined Macros: (cpp.info)Standard
  473.      Predefined, for more discussion of these and other predefined
  474.      macros.
  475.      The preprocessor considers a string constant to end at a newline
  476.      (unless the newline is escaped with `\').  (Without `-traditional',
  477.      string constants can contain the newline character as typed.)
  478. `-traditional-cpp'
  479.      Attempt to support some aspects of traditional C preprocessors.
  480.      This includes the last five items in the table immediately above,
  481.      but none of the other effects of `-traditional'.
  482. `-fcond-mismatch'
  483.      Allow conditional expressions with mismatched types in the second
  484.      and third arguments.  The value of such an expression is void.
  485. `-funsigned-char'
  486.      Let the type `char' be unsigned, like `unsigned char'.
  487.      Each kind of machine has a default for what `char' should be.  It
  488.      is either like `unsigned char' by default or like `signed char' by
  489.      default.
  490.      Ideally, a portable program should always use `signed char' or
  491.      `unsigned char' when it depends on the signedness of an object.
  492.      But many programs have been written to use plain `char' and expect
  493.      it to be signed, or expect it to be unsigned, depending on the
  494.      machines they were written for.  This option, and its inverse, let
  495.      you make such a program work with the opposite default.
  496.      The type `char' is always a distinct type from each of `signed
  497.      char' or `unsigned char', even though its behavior is always just
  498.      like one of those two.
  499. `-fsigned-char'
  500.      Let the type `char' be signed, like `signed char'.
  501.      Note that this is equivalent to `-fno-unsigned-char', which is the
  502.      negative form of `-funsigned-char'.  Likewise, the option
  503.      `-fno-signed-char' is equivalent to `-funsigned-char'.
  504. `-fsigned-bitfields'
  505. `-funsigned-bitfields'
  506. `-fno-signed-bitfields'
  507. `-fno-unsigned-bitfields'
  508.      These options control whether a bitfield is signed or unsigned,
  509.      when the declaration does not use either `signed' or `unsigned'.
  510.      By default, such a bitfield is signed, because this is consistent:
  511.      the basic integer types such as `int' are signed types.
  512.      However, when `-traditional' is used, bitfields are all unsigned
  513.      no matter what.
  514. `-fwritable-strings'
  515.      Store string constants in the writable data segment and don't
  516.      uniquize them.  This is for compatibility with old programs which
  517.      assume they can write into string constants.  The option
  518.      `-traditional' also has this effect.
  519.      Writing into string constants is a very bad idea; "constants"
  520.      should be constant.
  521. `-fallow-single-precision'
  522.      Do not promote single precision math operations to double
  523.      precision, even when compiling with `-traditional'.
  524.      Traditional K&R C promotes all floating point operations to double
  525.      precision, regardless of the sizes of the operands.   On the
  526.      architecture for which you are compiling, single precision may be
  527.      faster than double precision.   If you must use `-traditional',
  528.      but want to use single precision operations when the operands are
  529.      single precision, use this option.   This option has no effect
  530.      when compiling with ANSI or GNU C conventions (the default).
  531. File: gcc.info,  Node: C++ Dialect Options,  Next: Warning Options,  Prev: C Dialect Options,  Up: Invoking GCC
  532. Options Controlling C++ Dialect
  533. ===============================
  534.    This section describes the command-line options that are only
  535. meaningful for C++ programs; but you can also use most of the GNU
  536. compiler options regardless of what language your program is in.  For
  537. example, you might compile a file `firstClass.C' like this:
  538.      g++ -g -felide-constructors -O -c firstClass.C
  539. In this example, only `-felide-constructors' is an option meant only
  540. for C++ programs; you can use the other options with any language
  541. supported by GNU CC.
  542.    Here is a list of options that are *only* for compiling C++ programs:
  543. `-fno-access-control'
  544.      Turn off all access checking.  This switch is mainly useful for
  545.      working around bugs in the access control code.
  546. `-fall-virtual'
  547.      Treat all possible member functions as virtual, implicitly.  All
  548.      member functions (except for constructor functions and `new' or
  549.      `delete' member operators) are treated as virtual functions of the
  550.      class where they appear.
  551.      This does not mean that all calls to these member functions will
  552.      be made through the internal table of virtual functions.  Under
  553.      some circumstances, the compiler can determine that a call to a
  554.      given virtual function can be made directly; in these cases the
  555.      calls are direct in any case.
  556. `-fconserve-space'
  557.      Put uninitialized or runtime-initialized global variables into the
  558.      common segment, as C does.  This saves space in the executable at
  559.      the cost of not diagnosing duplicate definitions.  If your program
  560.      mysteriously crashes after `main()' has completed, you may have an
  561.      object that is being destroyed twice because two definitions were
  562.      merged.
  563. `-fdollars-in-identifiers'
  564.      Accept `$' in identifiers.  You can also explicitly prohibit use of
  565.      `$' with the option `-fno-dollars-in-identifiers'.  (GNU C++
  566.      allows `$' by default on some target systems but not others.)
  567.      Traditional C allowed the character `$' to form part of
  568.      identifiers.  However, ANSI C and C++ forbid `$' in identifiers.
  569. `-fenum-int-equiv'
  570.      Permit implicit conversion of `int' to enumeration types.  Normally
  571.      GNU C++ allows conversion of `enum' to `int', but not the other
  572.      way around.
  573. `-fexternal-templates'
  574.      Cause template instantiations to obey `#pragma interface' and
  575.      `implementation'; template instances are emitted or not according
  576.      to the location of the template definition.  *Note Template
  577.      Instantiation::, for more information.
  578. `-falt-external-templates'
  579.      Similar to -fexternal-templates, but template instances are
  580.      emitted or not according to the place where they are first
  581.      instantiated.  *Note Template Instantiation::, for more
  582.      information.
  583. `-fno-implicit-templates'
  584.      Never emit code for templates which are instantiated implicitly
  585.      (i.e. by use); only emit code for explicit instantiations.  *Note
  586.      Template Instantiation::, for more information.
  587. `-fhandle-signatures'
  588.      Recognize the `signature' and `sigof' keywords for specifying
  589.      abstract types.  The default (`-fno-handle-signatures') is not to
  590.      recognize them.  *Note Type Abstraction using Signatures: C++
  591.      Signatures.
  592. `-fhuge-objects'
  593.      Support virtual function calls for objects that exceed the size
  594.      representable by a `short int'.  Users should not use this flag by
  595.      default; if you need to use it, the compiler will tell you so.  If
  596.      you compile any of your code with this flag, you must compile
  597.      *all* of your code with this flag (including libg++, if you use
  598.      it).
  599.      This flag is not useful when compiling with -fvtable-thunks.
  600. `-fno-implement-inlines'
  601.      To save space, do not emit out-of-line copies of inline functions
  602.      controlled by `#pragma implementation'.  This will cause linker
  603.      errors if these functions are not inlined everywhere they are
  604.      called.
  605. `-fmemoize-lookups'
  606. `-fsave-memoized'
  607.      Use heuristics to compile faster.  These heuristics are not
  608.      enabled by default, since they are only effective for certain
  609.      input files.  Other input files compile more slowly.
  610.      The first time the compiler must build a call to a member function
  611.      (or reference to a data member), it must (1) determine whether the
  612.      class implements member functions of that name; (2) resolve which
  613.      member function to call (which involves figuring out what sorts of
  614.      type conversions need to be made); and (3) check the visibility of
  615.      the member function to the caller.  All of this adds up to slower
  616.      compilation.  Normally, the second time a call is made to that
  617.      member function (or reference to that data member), it must go
  618.      through the same lengthy process again.  This means that code like
  619.      this:
  620.           cout << "This " << p << " has " << n << " legs.\n";
  621.      makes six passes through all three steps.  By using a software
  622.      cache, a "hit" significantly reduces this cost.  Unfortunately,
  623.      using the cache introduces another layer of mechanisms which must
  624.      be implemented, and so incurs its own overhead.
  625.      `-fmemoize-lookups' enables the software cache.
  626.      Because access privileges (visibility) to members and member
  627.      functions may differ from one function context to the next, G++
  628.      may need to flush the cache.  With the `-fmemoize-lookups' flag,
  629.      the cache is flushed after every function that is compiled.  The
  630.      `-fsave-memoized' flag enables the same software cache, but when
  631.      the compiler determines that the context of the last function
  632.      compiled would yield the same access privileges of the next
  633.      function to compile, it preserves the cache.  This is most helpful
  634.      when defining many member functions for the same class: with the
  635.      exception of member functions which are friends of other classes,
  636.      each member function has exactly the same access privileges as
  637.      every other, and the cache need not be flushed.
  638. `-fno-strict-prototype'
  639.      Treat a function declaration with no arguments, such as `int foo
  640.      ();', as C would treat it--as saying nothing about the number of
  641.      arguments or their types.  Normally, such a declaration in C++
  642.      means that the function `foo' takes no arguments.
  643.      This option does not work with operator overloading, which places
  644.      constraints on the parameter types.
  645. `-fnonnull-objects'
  646.      Assume that objects reached through references are not null.
  647.      Normally, GNU C++ makes conservative assumptions about objects
  648.      reached through references.  For example, the compiler must check
  649.      that `a' is not null in code like the following:
  650.           obj &a = g ();
  651.           a.f (2);
  652.      Checking that references of this sort have non-null values requires
  653.      extra code, however, and it is unnecessary for many programs.  You
  654.      can use `-fnonnull-objects' to omit the checks for null, if your
  655.      program doesn't require checking.
  656.      This checking is currently only done for conversions to virtual
  657.      base classes.
  658. `-fthis-is-variable'
  659.      Permit assignment to `this'.  The incorporation of user-defined
  660.      free store management into C++ has made assignment to `this' an
  661.      anachronism.  Therefore, by default it is invalid to assign to
  662.      `this' within a class member function; that is, GNU C++ treats
  663.      `this' in a member function of class `X' as a non-lvalue of type
  664.      `X *'.  However, for backwards compatibility, you can make it
  665.      valid with `-fthis-is-variable'.
  666. `-fvtable-thunks'
  667.      Use `thunks' to implement the virtual function dispatch table
  668.      (`vtable').  The traditional (cfront-style) approach to
  669.      implementing vtables was to store a pointer to the function and two
  670.      offsets for adjusting the `this' pointer at the call site.  Newer
  671.      implementations store a single pointer to a `thunk' function which
  672.      does any necessary adjustment and then calls the target function.
  673.      This option also enables a heuristic for controlling emission of
  674.      vtables; if a class has any non-inline virtual functions, the
  675.      vtable will be emitted in the translation unit containing the
  676.      first one of those.
  677. `-nostdinc++'
  678.      Do not search for header files in the standard directories
  679.      specific to C++, but do still search the other standard
  680.      directories.  (This option is used when building libg++.)
  681. `-traditional'
  682.      For C++ programs (in addition to the effects that apply to both C
  683.      and C++), this has the same effect as `-fthis-is-variable'.  *Note
  684.      Options Controlling C Dialect: C Dialect Options.
  685.    In addition, these optimization, warning, and code generation options
  686. have meanings only for C++ programs:
  687. `-fno-default-inline'
  688.      Do not assume `inline' for functions defined inside a class scope.
  689.      *Note Options That Control Optimization: Optimize Options.
  690. `-Wenum-clash'
  691. `-Woverloaded-virtual'
  692. `-Wtemplate-debugging'
  693.      Warnings that apply only to C++ programs.  *Note Options to
  694.      Request or Suppress Warnings: Warning Options.
  695. `+eN'
  696.      Control how virtual function definitions are used, in a fashion
  697.      compatible with `cfront' 1.x.  *Note Options for Code Generation
  698.      Conventions: Code Gen Options.
  699. File: gcc.info,  Node: Warning Options,  Next: Debugging Options,  Prev: C++ Dialect Options,  Up: Invoking GCC
  700. Options to Request or Suppress Warnings
  701. =======================================
  702.    Warnings are diagnostic messages that report constructions which are
  703. not inherently erroneous but which are risky or suggest there may have
  704. been an error.
  705.    You can request many specific warnings with options beginning `-W',
  706. for example `-Wimplicit' to request warnings on implicit declarations.
  707. Each of these specific warning options also has a negative form
  708. beginning `-Wno-' to turn off warnings; for example, `-Wno-implicit'.
  709. This manual lists only one of the two forms, whichever is not the
  710. default.
  711.    These options control the amount and kinds of warnings produced by
  712. GNU CC:
  713. `-fsyntax-only'
  714.      Check the code for syntax errors, but don't do anything beyond
  715.      that.
  716.      Inhibit all warning messages.
  717. `-Wno-import'
  718.      Inhibit warning messages about the use of `#import'.
  719. `-pedantic'
  720.      Issue all the warnings demanded by strict ANSI standard C; reject
  721.      all programs that use forbidden extensions.
  722.      Valid ANSI standard C programs should compile properly with or
  723.      without this option (though a rare few will require `-ansi').
  724.      However, without this option, certain GNU extensions and
  725.      traditional C features are supported as well.  With this option,
  726.      they are rejected.
  727.      `-pedantic' does not cause warning messages for use of the
  728.      alternate keywords whose names begin and end with `__'.  Pedantic
  729.      warnings are also disabled in the expression that follows
  730.      `__extension__'.  However, only system header files should use
  731.      these escape routes; application programs should avoid them.
  732.      *Note Alternate Keywords::.
  733.      This option is not intended to be useful; it exists only to satisfy
  734.      pedants who would otherwise claim that GNU CC fails to support the
  735.      ANSI standard.
  736.      Some users try to use `-pedantic' to check programs for strict ANSI
  737.      C conformance.  They soon find that it does not do quite what they
  738.      want: it finds some non-ANSI practices, but not all--only those
  739.      for which ANSI C *requires* a diagnostic.
  740.      A feature to report any failure to conform to ANSI C might be
  741.      useful in some instances, but would require considerable
  742.      additional work and would be quite different from `-pedantic'.  We
  743.      recommend, rather, that users take advantage of the extensions of
  744.      GNU C and disregard the limitations of other compilers.  Aside
  745.      from certain supercomputers and obsolete small machines, there is
  746.      less and less reason ever to use any other C compiler other than
  747.      for bootstrapping GNU CC.
  748. `-pedantic-errors'
  749.      Like `-pedantic', except that errors are produced rather than
  750.      warnings.
  751.      Print extra warning messages for these events:
  752.         * A nonvolatile automatic variable might be changed by a call to
  753.           `longjmp'.  These warnings as well are possible only in
  754.           optimizing compilation.
  755.           The compiler sees only the calls to `setjmp'.  It cannot know
  756.           where `longjmp' will be called; in fact, a signal handler
  757.           could call it at any point in the code.  As a result, you may
  758.           get a warning even when there is in fact no problem because
  759.           `longjmp' cannot in fact be called at the place which would
  760.           cause a problem.
  761.         * A function can return either with or without a value.
  762.           (Falling off the end of the function body is considered
  763.           returning without a value.)  For example, this function would
  764.           evoke such a warning:
  765.                foo (a)
  766.                {
  767.                  if (a > 0)
  768.                    return a;
  769.                }
  770.         * An expression-statement contains no side effects.
  771.         * An unsigned value is compared against zero with `<' or `<='.
  772.         * A comparison like `x<=y<=z' appears; this is equivalent to
  773.           `(x<=y ? 1 : 0) <= z', which is a different interpretation
  774.           from that of ordinary mathematical notation.
  775.         * Storage-class specifiers like `static' are not the first
  776.           things in a declaration.  According to the C Standard, this
  777.           usage is obsolescent.
  778.         * An aggregate has a partly bracketed initializer.  For
  779.           example, the following code would evoke such a warning,
  780.           because braces are missing around the initializer for `x.h':
  781.                struct s { int f, g; };
  782.                struct t { struct s h; int i; };
  783.                struct t x = { 1, 2, 3 };
  784. `-Wimplicit'
  785.      Warn whenever a function or parameter is implicitly declared.
  786. `-Wreturn-type'
  787.      Warn whenever a function is defined with a return-type that
  788.      defaults to `int'.  Also warn about any `return' statement with no
  789.      return-value in a function whose return-type is not `void'.
  790. `-Wunused'
  791.      Warn whenever a variable is unused aside from its declaration,
  792.      whenever a function is declared static but never defined, whenever
  793.      a label is declared but not used, and whenever a statement
  794.      computes a result that is explicitly not used.
  795.      To suppress this warning for a local variable or expression,
  796.      simply cast it to void.  This will also work for file-scope
  797.      variables, but if you want to mark them used at the point of
  798.      definition, you can use this macro:
  799.           #define USE(var) \
  800.             static void *const use_##var = (&use_##var, &var, 0)
  801.           
  802.           USE (string);
  803. `-Wswitch'
  804.      Warn whenever a `switch' statement has an index of enumeral type
  805.      and lacks a `case' for one or more of the named codes of that
  806.      enumeration.  (The presence of a `default' label prevents this
  807.      warning.)  `case' labels outside the enumeration range also
  808.      provoke warnings when this option is used.
  809. `-Wcomment'
  810.      Warn whenever a comment-start sequence `/*' appears in a comment.
  811. `-Wtrigraphs'
  812.      Warn if any trigraphs are encountered (assuming they are enabled).
  813. `-Wformat'
  814.      Check calls to `printf' and `scanf', etc., to make sure that the
  815.      arguments supplied have types appropriate to the format string
  816.      specified.
  817. `-Wchar-subscripts'
  818.      Warn if an array subscript has type `char'.  This is a common cause
  819.      of error, as programmers often forget that this type is signed on
  820.      some machines.
  821. `-Wuninitialized'
  822.      An automatic variable is used without first being initialized.
  823.      These warnings are possible only in optimizing compilation,
  824.      because they require data flow information that is computed only
  825.      when optimizing.  If you don't specify `-O', you simply won't get
  826.      these warnings.
  827.      These warnings occur only for variables that are candidates for
  828.      register allocation.  Therefore, they do not occur for a variable
  829.      that is declared `volatile', or whose address is taken, or whose
  830.      size is other than 1, 2, 4 or 8 bytes.  Also, they do not occur for
  831.      structures, unions or arrays, even when they are in registers.
  832.      Note that there may be no warning about a variable that is used
  833.      only to compute a value that itself is never used, because such
  834.      computations may be deleted by data flow analysis before the
  835.      warnings are printed.
  836.      These warnings are made optional because GNU CC is not smart
  837.      enough to see all the reasons why the code might be correct
  838.      despite appearing to have an error.  Here is one example of how
  839.      this can happen:
  840.           {
  841.             int x;
  842.             switch (y)
  843.               {
  844.               case 1: x = 1;
  845.                 break;
  846.               case 2: x = 4;
  847.                 break;
  848.               case 3: x = 5;
  849.               }
  850.             foo (x);
  851.           }
  852.      If the value of `y' is always 1, 2 or 3, then `x' is always
  853.      initialized, but GNU CC doesn't know this.  Here is another common
  854.      case:
  855.           {
  856.             int save_y;
  857.             if (change_y) save_y = y, y = new_y;
  858.             ...
  859.             if (change_y) y = save_y;
  860.           }
  861.      This has no bug because `save_y' is used only if it is set.
  862.      Some spurious warnings can be avoided if you declare all the
  863.      functions you use that never return as `noreturn'.  *Note Function
  864.      Attributes::.
  865. `-Wparentheses'
  866.      Warn if parentheses are omitted in certain contexts, such as when
  867.      there is an assignment in a context where a truth value is
  868.      expected, or when operators are nested whose precedence people
  869.      often get confused about.
  870. `-Wenum-clash'
  871.      Warn about conversion between different enumeration types.  (C++
  872.      only).
  873. `-Wtemplate-debugging'
  874.      When using templates in a C++ program, warn if debugging is not yet
  875.      fully available (C++ only).
  876. `-Wreorder (C++ only)'
  877.      Warn when the order of member initializers given in the code does
  878.      not match the order in which they must be executed.  For instance:
  879.           struct A {
  880.             int i;
  881.             int j;
  882.             A(): j (0), i (1) { }
  883.           };
  884.      Here the compiler will warn that the member initializers for `i'
  885.      and `j' will be rearranged to match the declaration order of the
  886.      members.
  887. `-Wall'
  888.      All of the above `-W' options combined.  These are all the options
  889.      which pertain to usage that we recommend avoiding and that we
  890.      believe is easy to avoid, even in conjunction with macros.
  891.    The remaining `-W...' options are not implied by `-Wall' because
  892. they warn about constructions that we consider reasonable to use, on
  893. occasion, in clean programs.
  894. `-Wtraditional'
  895.      Warn about certain constructs that behave differently in
  896.      traditional and ANSI C.
  897.         * Macro arguments occurring within string constants in the
  898.           macro body.  These would substitute the argument in
  899.           traditional C, but are part of the constant in ANSI C.
  900.         * A function declared external in one block and then used after
  901.           the end of the block.
  902.         * A `switch' statement has an operand of type `long'.
  903. `-Wshadow'
  904.      Warn whenever a local variable shadows another local variable.
  905. `-Wid-clash-LEN'
  906.      Warn whenever two distinct identifiers match in the first LEN
  907.      characters.  This may help you prepare a program that will compile
  908.      with certain obsolete, brain-damaged compilers.
  909. `-Wlarger-than-LEN'
  910.      Warn whenever an object of larger than LEN bytes is defined.
  911. `-Wpointer-arith'
  912.      Warn about anything that depends on the "size of" a function type
  913.      or of `void'.  GNU C assigns these types a size of 1, for
  914.      convenience in calculations with `void *' pointers and pointers to
  915.      functions.
  916. `-Wbad-function-cast'
  917.      Warn whenever a function call is cast to a non-matching type.  For
  918.      example, warn if `int malloc()' is cast to `anything *'.
  919. `-Wcast-qual'
  920.      Warn whenever a pointer is cast so as to remove a type qualifier
  921.      from the target type.  For example, warn if a `const char *' is
  922.      cast to an ordinary `char *'.
  923. `-Wcast-align'
  924.      Warn whenever a pointer is cast such that the required alignment
  925.      of the target is increased.  For example, warn if a `char *' is
  926.      cast to an `int *' on machines where integers can only be accessed
  927.      at two- or four-byte boundaries.
  928. `-Wwrite-strings'
  929.      Give string constants the type `const char[LENGTH]' so that
  930.      copying the address of one into a non-`const' `char *' pointer
  931.      will get a warning.  These warnings will help you find at compile
  932.      time code that can try to write into a string constant, but only
  933.      if you have been very careful about using `const' in declarations
  934.      and prototypes.  Otherwise, it will just be a nuisance; this is
  935.      why we did not make `-Wall' request these warnings.
  936. `-Wconversion'
  937.      Warn if a prototype causes a type conversion that is different
  938.      from what would happen to the same argument in the absence of a
  939.      prototype.  This includes conversions of fixed point to floating
  940.      and vice versa, and conversions changing the width or signedness
  941.      of a fixed point argument except when the same as the default
  942.      promotion.
  943.      Also, warn if a negative integer constant expression is implicitly
  944.      converted to an unsigned type.  For example, warn about the
  945.      assignment `x = -1' if `x' is unsigned.  But do not warn about
  946.      explicit casts like `(unsigned) -1'.
  947. `-Waggregate-return'
  948.      Warn if any functions that return structures or unions are defined
  949.      or called.  (In languages where you can return an array, this also
  950.      elicits a warning.)
  951. `-Wstrict-prototypes'
  952.      Warn if a function is declared or defined without specifying the
  953.      argument types.  (An old-style function definition is permitted
  954.      without a warning if preceded by a declaration which specifies the
  955.      argument types.)
  956. `-Wmissing-prototypes'
  957.      Warn if a global function is defined without a previous prototype
  958.      declaration.  This warning is issued even if the definition itself
  959.      provides a prototype.  The aim is to detect global functions that
  960.      fail to be declared in header files.
  961. `-Wmissing-declarations'
  962.      Warn if a global function is defined without a previous
  963.      declaration.  Do so even if the definition itself provides a
  964.      prototype.  Use this option to detect global functions that are
  965.      not declared in header files.
  966. `-Wredundant-decls'
  967.      Warn if anything is declared more than once in the same scope,
  968.      even in cases where multiple declaration is valid and changes
  969.      nothing.
  970. `-Wnested-externs'
  971.      Warn if an `extern' declaration is encountered within an function.
  972. `-Winline'
  973.      Warn if a function can not be inlined, and either it was declared
  974.      as inline, or else the `-finline-functions' option was given.
  975. `-Woverloaded-virtual'
  976.      Warn when a derived class function declaration may be an error in
  977.      defining a virtual function (C++ only).  In a derived class, the
  978.      definitions of virtual functions must match the type signature of a
  979.      virtual function declared in the base class.  With this option, the
  980.      compiler warns when you define a function with the same name as a
  981.      virtual function, but with a type signature that does not match any
  982.      declarations from the base class.
  983. `-Wsynth (C++ only)'
  984.      Warn when g++'s synthesis behavior does not match that of cfront.
  985.      For instance:
  986.           struct A {
  987.             operator int ();
  988.             A& operator = (int);
  989.           };
  990.           
  991.           main ()
  992.           {
  993.             A a,b;
  994.             a = b;
  995.           }
  996.      In this example, g++ will synthesize a default `A& operator =
  997.      (const A&);', while cfront will use the user-defined `operator ='.
  998. `-Werror'
  999.      Make all warnings into errors.
  1000.