aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.2.1-5666.3/gcc/doc/standards.texi
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.2.1-5666.3/gcc/doc/standards.texi')
-rw-r--r--gcc-4.2.1-5666.3/gcc/doc/standards.texi195
1 files changed, 195 insertions, 0 deletions
diff --git a/gcc-4.2.1-5666.3/gcc/doc/standards.texi b/gcc-4.2.1-5666.3/gcc/doc/standards.texi
new file mode 100644
index 000000000..e8cbac854
--- /dev/null
+++ b/gcc-4.2.1-5666.3/gcc/doc/standards.texi
@@ -0,0 +1,195 @@
+@c Copyright (C) 2000, 2001, 2002, 2004 Free Software Foundation, 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
+@cindex C standard
+@cindex C standards
+@cindex ANSI C standard
+@cindex ANSI C
+@cindex ANSI C89
+@cindex C89
+@cindex ANSI X3.159-1989
+@cindex X3.159-1989
+@cindex ISO C standard
+@cindex ISO C
+@cindex ISO C90
+@cindex ISO/IEC 9899
+@cindex ISO 9899
+@cindex C90
+@cindex ISO C94
+@cindex C94
+@cindex ISO C95
+@cindex C95
+@cindex ISO C99
+@cindex C99
+@cindex ISO C9X
+@cindex C9X
+@cindex Technical Corrigenda
+@cindex TC1
+@cindex Technical Corrigendum 1
+@cindex TC2
+@cindex Technical Corrigendum 2
+@cindex AMD1
+@cindex freestanding implementation
+@cindex freestanding environment
+@cindex hosted implementation
+@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.
+
+@opindex std
+@opindex ansi
+@opindex pedantic
+@opindex pedantic-errors
+The original ANSI C standard (X3.159-1989) was ratified in 1989 and
+published in 1990. This standard was ratified as an ISO standard
+(ISO/IEC 9899:1990) later in 1990. There were no technical
+differences between these publications, although the sections of the
+ANSI standard were renumbered and became clauses in the ISO standard.
+This standard, in both its forms, is commonly known as @dfn{C89}, or
+occasionally as @dfn{C90}, from the dates of ratification. The ANSI
+standard, but not the ISO standard, also came with a Rationale
+document. To select this standard in GCC, use one of the options
+@option{-ansi}, @option{-std=c89} or @option{-std=iso9899:1990}; 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). @xref{C Dialect Options,,Options
+Controlling C Dialect}.
+
+Errors in the 1990 ISO C standard were corrected in two Technical
+Corrigenda published in 1994 and 1996. GCC does not support the
+uncorrected version.
+
+An amendment to the 1990 standard was published in 1995. This
+amendment added digraphs and @code{__STDC_VERSION__} to the language,
+but otherwise concerned the library. This amendment is commonly known
+as @dfn{AMD1}; the amended standard is sometimes known as @dfn{C94} or
+@dfn{C95}. To select this standard in GCC, use the option
+@option{-std=iso9899:199409} (with, as for other standard versions,
+@option{-pedantic} to receive all required diagnostics).
+
+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-4.2/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 two Technical
+Corrigenda published in 2001 and 2004. 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
+Extensions,,Extensions to the C Language Family}. Use of the
+@option{-std} options listed above will disable these extensions where
+they conflict with the C standard version selected. You may also
+select an extended version of the C language explicitly with
+@option{-std=gnu89} (for C89 with GNU extensions) or @option{-std=gnu99}
+(for C99 with GNU extensions). The default, if no C language dialect
+options are given, is @option{-std=gnu89}; this will change to
+@option{-std=gnu99} in some future release when the C99 support is
+complete. Some features that are part of the C99 standard are
+accepted as extensions in C89 mode.
+
+The ISO C standard defines (in clause 4) two classes of conforming
+implementation. A @dfn{conforming hosted implementation} supports the
+whole standard including all the library facilities; a @dfn{conforming
+freestanding implementation} is only required to provide certain
+library facilities: those in @code{<float.h>}, @code{<limits.h>},
+@code{<stdarg.h>}, and @code{<stddef.h>}; since AMD1, also those in
+@code{<iso646.h>}; and in C99, also those in @code{<stdbool.h>} and
+@code{<stdint.h>}. In addition, complex types, added in C99, are not
+required for freestanding implementations. The standard also defines
+two environments for programs, a @dfn{freestanding environment},
+required of all implementations and which may not have library
+facilities beyond those required of freestanding implementations,
+where the handling of program startup and termination are
+implementation-defined, and a @dfn{hosted environment}, which is not
+required, in which all the library facilities are provided and startup
+is through a function @code{int main (void)} or @code{int main (int,
+char *[])}. An OS kernel would be a freestanding environment; a
+program using the facilities of an operating system would normally be
+in a hosted implementation.
+
+@opindex ffreestanding
+GCC aims towards being usable as a conforming freestanding
+implementation, or as the compiler for a conforming hosted
+implementation. By default, it will act as the compiler for a hosted
+implementation, defining @code{__STDC_HOSTED__} as @code{1} and
+presuming that when the names of ISO C functions are used, they have
+the semantics defined in the standard. To make it act as a conforming
+freestanding implementation for a freestanding environment, use the
+option @option{-ffreestanding}; it will then define
+@code{__STDC_HOSTED__} to @code{0} and not make assumptions about the
+meanings of function names from the standard library, with exceptions
+noted below. To build an OS kernel, you may well still need to make
+your own arrangements for linking and startup.
+@xref{C Dialect Options,,Options Controlling C Dialect}.
+
+GCC does not provide the library facilities required only of hosted
+implementations, nor yet all the facilities required by C99 of
+freestanding implementations; to use the facilities of a hosted
+environment, you will need to find them elsewhere (for example, in the
+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}.
+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}.
+
+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.
+
+@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:
+
+@itemize
+@item
+@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;
+@item
+@uref{http://www.gnustep.org}
+and
+@uref{http://gcc.gnu.org/readings.html}
+have additional useful information.
+@end itemize
+
+@cindex treelang
+There is no standard for treelang, which is a sample language front end
+for GCC@. Its only purpose is as a sample for people wishing to write a
+new language for GCC@. The language is documented in
+@file{gcc/treelang/treelang.texi} which can be turned into info or
+HTML format.
+
+@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{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 @command{gcj} and the Java Platform.