]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/doc/standards.texi
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / doc / standards.texi
index b3e8b180a596ea6dd801ff4f5156e76494383471..471ea456e1f03d5672fda47d086edccc0b5409d7 100644 (file)
@@ -1,9 +1,16 @@
-@c Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+@c Copyright (C) 2000, 2001, 2002, 2004, 2006, 2007, 2008 Free Software Foundation,
+@c Inc.
 @c This is part of the GCC manual.
 @c For copying conditions, see the file gcc.texi.
 
 @node Standards
 @chapter Language Standards Supported by GCC
+
+For each language compiled by GCC for which there is a standard, GCC
+attempts to follow one or more versions of that standard, possibly
+with some exceptions, and possibly with some extensions.
+
+@section C language
 @cindex C standard
 @cindex C standards
 @cindex ANSI C standard
@@ -14,7 +21,6 @@
 @cindex X3.159-1989
 @cindex ISO C standard
 @cindex ISO C
-@cindex ISO C89
 @cindex ISO C90
 @cindex ISO/IEC 9899
 @cindex ISO 9899
@@ -32,6 +38,8 @@
 @cindex Technical Corrigendum 1
 @cindex TC2
 @cindex Technical Corrigendum 2
+@cindex TC3
+@cindex Technical Corrigendum 3
 @cindex AMD1
 @cindex freestanding implementation
 @cindex freestanding environment
 @cindex hosted environment
 @findex __STDC_HOSTED__
 
-For each language compiled by GCC for which there is a standard, GCC
-attempts to follow one or more versions of that standard, possibly
-with some exceptions, and possibly with some extensions.
-
 GCC supports three versions of the C standard, although support for
 the most recent version is not yet complete.
 
@@ -80,21 +84,14 @@ as @dfn{AMD1}; the amended standard is sometimes known as @dfn{C94} or
 A new edition of the ISO C standard was published in 1999 as ISO/IEC
 9899:1999, and is commonly known as @dfn{C99}.  GCC has incomplete
 support for this standard version; see
-@uref{http://gcc.gnu.org/gcc-3.1/c99status.html} for details.  To select this
+@uref{http://gcc.gnu.org/gcc-4.4/c99status.html} for details.  To select this
 standard, use @option{-std=c99} or @option{-std=iso9899:1999}.  (While in
 development, drafts of this standard version were referred to as
 @dfn{C9X}.)
 
-Errors in the 1999 ISO C standard were corrected in a Technical
-Corrigendum published in 2001.  GCC does not support the uncorrected
-version.
-
-@opindex traditional
-GCC also has some limited support for traditional (pre-ISO) C with the
-@option{-traditional} option.  This support may be of use for compiling
-some very old programs that have not been updated to ISO C, but should
-not be used for new programs.  It will not work with some modern C
-libraries such as the GNU C library.
+Errors in the 1999 ISO C standard were corrected in three Technical
+Corrigenda published in 2001, 2004 and 2007.  GCC does not support the
+uncorrected version.
 
 By default, GCC provides some extensions to the C language that on
 rare occasions conflict with the C standard.  @xref{C
@@ -153,10 +150,8 @@ GNU C library).  @xref{Standard Libraries,,Standard Libraries}.
 Most of the compiler support routines used by GCC are present in
 @file{libgcc}, but there are a few exceptions.  GCC requires the
 freestanding environment provide @code{memcpy}, @code{memmove},
-@code{memset} and @code{memcmp}.  Some older ports of GCC are 
-configured to use the BSD @code{bcopy}, @code{bzero} and @code{bcmp}
-functions instead, but this is deprecated for new ports.
-Finally, if @code{__builtin_trap} is used, and the target does 
+@code{memset} and @code{memcmp}.
+Finally, if @code{__builtin_trap} is used, and the target does
 not implement the @code{trap} pattern, then GCC will emit a call
 to @code{abort}.
 
@@ -164,30 +159,72 @@ For references to Technical Corrigenda, Rationale documents and
 information concerning the history of C that is available online, see
 @uref{http://gcc.gnu.org/readings.html}
 
-@c FIXME: details of C++ standard.
+@section C++ language
+
+GCC supports the ISO C++ standard (1998) and contains experimental
+support for the upcoming ISO C++ standard (200x).
+
+The original ISO C++ standard was published as the ISO standard (ISO/IEC
+14882:1998) and amended by a Technical Corrigenda published in 2003
+(ISO/IEC 14882:2003). These standards are referred to as C++98 and
+C++03, respectively. GCC implements the majority of C++98 (@code{export}
+is a notable exception) and most of the changes in C++03.  To select
+this standard in GCC, use one of the options @option{-ansi} or
+@option{-std=c++98}; to obtain all the diagnostics required by the
+standard, you should also specify @option{-pedantic} (or
+@option{-pedantic-errors} if you want them to be errors rather than
+warnings).
+
+The ISO C++ committee is working on a new ISO C++ standard, dubbed
+C++0x, that is intended to be published by 2009. C++0x contains several
+changes to the C++ language, some of which have been implemented in an
+experimental C++0x mode in GCC@. The C++0x mode in GCC tracks the draft
+working paper for the C++0x standard; the latest working paper is
+available on the ISO C++ committee's web site at
+@uref{http://www.open-std.org/jtc1/sc22/wg21/}. For information
+regarding the C++0x features available in the experimental C++0x mode,
+see @uref{http://gcc.gnu.org/gcc-4.3/cxx0x_status.html}. To select this
+standard in GCC, use the option @option{-std=c++0x}; to obtain all the
+diagnostics required by the standard, you should also specify
+@option{-pedantic} (or @option{-pedantic-errors} if you want them to be
+errors rather than warnings).
 
-There is no formal written standard for Objective-C@.  The most
+By default, GCC provides some extensions to the C++ language; @xref{C++
+Dialect Options,Options Controlling C++ Dialect}.  Use of the
+@option{-std} option listed above will disable these extensions.  You
+may also select an extended version of the C++ language explicitly with
+@option{-std=gnu++98} (for C++98 with GNU extensions) or
+@option{-std=gnu++0x} (for C++0x with GNU extensions).  The default, if
+no C++ language dialect options are given, is @option{-std=gnu++98}.
+
+@section Objective-C and Objective-C++ languages
+@cindex Objective-C
+@cindex Objective-C++
+
+There is no formal written standard for Objective-C or Objective-C++@.  The most
 authoritative manual is ``Object-Oriented Programming and the
-Objective-C Language'', available at a number of web sites
+Objective-C Language'', available at a number of web sites:
 
 @itemize
 @item
-@uref{http://developer.apple.com/techpubs/macosx/Cocoa/ObjectiveC/}
-is a recent version
+@uref{http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/}
+is a recent (and periodically updated) version;
 @item
 @uref{http://www.toodarkpark.org/computers/objc/}
-is an older example
+is an older example;
 @item
 @uref{http://www.gnustep.org}
-has additional useful information
+and
+@uref{http://gcc.gnu.org/readings.html}
+have additional useful information.
 @end itemize
 
 @xref{Top, GNAT Reference Manual, About This Guide, gnat_rm,
 GNAT Reference Manual}, for information on standard
 conformance and compatibility of the Ada compiler.
 
-@xref{Language,,The GNU Fortran Language, g77, Using and Porting GNU
-Fortran}, for details of the Fortran language supported by GCC@.
+@xref{Standards,,Standards, gfortran, The GNU Fortran Compiler}, for details
+of standards supported by GNU Fortran.
 
 @xref{Compatibility,,Compatibility with the Java Platform, gcj, GNU gcj},
-for details of compatibility between @code{gcj} and the Java Platform.
+for details of compatibility between @command{gcj} and the Java Platform.