OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [doc/] [standards.texi] - Blame information for rev 867

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 julius
@c Copyright (C) 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
2
@c This is part of the GCC manual.
3
@c For copying conditions, see the file gcc.texi.
4
 
5
@node Standards
6
@chapter Language Standards Supported by GCC
7
@cindex C standard
8
@cindex C standards
9
@cindex ANSI C standard
10
@cindex ANSI C
11
@cindex ANSI C89
12
@cindex C89
13
@cindex ANSI X3.159-1989
14
@cindex X3.159-1989
15
@cindex ISO C standard
16
@cindex ISO C
17
@cindex ISO C90
18
@cindex ISO/IEC 9899
19
@cindex ISO 9899
20
@cindex C90
21
@cindex ISO C94
22
@cindex C94
23
@cindex ISO C95
24
@cindex C95
25
@cindex ISO C99
26
@cindex C99
27
@cindex ISO C9X
28
@cindex C9X
29
@cindex Technical Corrigenda
30
@cindex TC1
31
@cindex Technical Corrigendum 1
32
@cindex TC2
33
@cindex Technical Corrigendum 2
34
@cindex AMD1
35
@cindex freestanding implementation
36
@cindex freestanding environment
37
@cindex hosted implementation
38
@cindex hosted environment
39
@findex __STDC_HOSTED__
40
 
41
For each language compiled by GCC for which there is a standard, GCC
42
attempts to follow one or more versions of that standard, possibly
43
with some exceptions, and possibly with some extensions.
44
 
45
GCC supports three versions of the C standard, although support for
46
the most recent version is not yet complete.
47
 
48
@opindex std
49
@opindex ansi
50
@opindex pedantic
51
@opindex pedantic-errors
52
The original ANSI C standard (X3.159-1989) was ratified in 1989 and
53
published in 1990.  This standard was ratified as an ISO standard
54
(ISO/IEC 9899:1990) later in 1990.  There were no technical
55
differences between these publications, although the sections of the
56
ANSI standard were renumbered and became clauses in the ISO standard.
57
This standard, in both its forms, is commonly known as @dfn{C89}, or
58
occasionally as @dfn{C90}, from the dates of ratification.  The ANSI
59
standard, but not the ISO standard, also came with a Rationale
60
document.  To select this standard in GCC, use one of the options
61
@option{-ansi}, @option{-std=c89} or @option{-std=iso9899:1990}; to obtain
62
all the diagnostics required by the standard, you should also specify
63
@option{-pedantic} (or @option{-pedantic-errors} if you want them to be
64
errors rather than warnings).  @xref{C Dialect Options,,Options
65
Controlling C Dialect}.
66
 
67
Errors in the 1990 ISO C standard were corrected in two Technical
68
Corrigenda published in 1994 and 1996.  GCC does not support the
69
uncorrected version.
70
 
71
An amendment to the 1990 standard was published in 1995.  This
72
amendment added digraphs and @code{__STDC_VERSION__} to the language,
73
but otherwise concerned the library.  This amendment is commonly known
74
as @dfn{AMD1}; the amended standard is sometimes known as @dfn{C94} or
75
@dfn{C95}.  To select this standard in GCC, use the option
76
@option{-std=iso9899:199409} (with, as for other standard versions,
77
@option{-pedantic} to receive all required diagnostics).
78
 
79
A new edition of the ISO C standard was published in 1999 as ISO/IEC
80
9899:1999, and is commonly known as @dfn{C99}.  GCC has incomplete
81
support for this standard version; see
82
@uref{http://gcc.gnu.org/gcc-4.2/c99status.html} for details.  To select this
83
standard, use @option{-std=c99} or @option{-std=iso9899:1999}.  (While in
84
development, drafts of this standard version were referred to as
85
@dfn{C9X}.)
86
 
87
Errors in the 1999 ISO C standard were corrected in two Technical
88
Corrigenda published in 2001 and 2004.  GCC does not support the uncorrected
89
version.
90
 
91
By default, GCC provides some extensions to the C language that on
92
rare occasions conflict with the C standard.  @xref{C
93
Extensions,,Extensions to the C Language Family}.  Use of the
94
@option{-std} options listed above will disable these extensions where
95
they conflict with the C standard version selected.  You may also
96
select an extended version of the C language explicitly with
97
@option{-std=gnu89} (for C89 with GNU extensions) or @option{-std=gnu99}
98
(for C99 with GNU extensions).  The default, if no C language dialect
99
options are given, is @option{-std=gnu89}; this will change to
100
@option{-std=gnu99} in some future release when the C99 support is
101
complete.  Some features that are part of the C99 standard are
102
accepted as extensions in C89 mode.
103
 
104
The ISO C standard defines (in clause 4) two classes of conforming
105
implementation.  A @dfn{conforming hosted implementation} supports the
106
whole standard including all the library facilities; a @dfn{conforming
107
freestanding implementation} is only required to provide certain
108
library facilities: those in @code{<float.h>}, @code{<limits.h>},
109
@code{<stdarg.h>}, and @code{<stddef.h>}; since AMD1, also those in
110
@code{<iso646.h>}; and in C99, also those in @code{<stdbool.h>} and
111
@code{<stdint.h>}.  In addition, complex types, added in C99, are not
112
required for freestanding implementations.  The standard also defines
113
two environments for programs, a @dfn{freestanding environment},
114
required of all implementations and which may not have library
115
facilities beyond those required of freestanding implementations,
116
where the handling of program startup and termination are
117
implementation-defined, and a @dfn{hosted environment}, which is not
118
required, in which all the library facilities are provided and startup
119
is through a function @code{int main (void)} or @code{int main (int,
120
char *[])}.  An OS kernel would be a freestanding environment; a
121
program using the facilities of an operating system would normally be
122
in a hosted implementation.
123
 
124
@opindex ffreestanding
125
GCC aims towards being usable as a conforming freestanding
126
implementation, or as the compiler for a conforming hosted
127
implementation.  By default, it will act as the compiler for a hosted
128
implementation, defining @code{__STDC_HOSTED__} as @code{1} and
129
presuming that when the names of ISO C functions are used, they have
130
the semantics defined in the standard.  To make it act as a conforming
131
freestanding implementation for a freestanding environment, use the
132
option @option{-ffreestanding}; it will then define
133
@code{__STDC_HOSTED__} to @code{0} and not make assumptions about the
134
meanings of function names from the standard library, with exceptions
135
noted below.  To build an OS kernel, you may well still need to make
136
your own arrangements for linking and startup.
137
@xref{C Dialect Options,,Options Controlling C Dialect}.
138
 
139
GCC does not provide the library facilities required only of hosted
140
implementations, nor yet all the facilities required by C99 of
141
freestanding implementations; to use the facilities of a hosted
142
environment, you will need to find them elsewhere (for example, in the
143
GNU C library).  @xref{Standard Libraries,,Standard Libraries}.
144
 
145
Most of the compiler support routines used by GCC are present in
146
@file{libgcc}, but there are a few exceptions.  GCC requires the
147
freestanding environment provide @code{memcpy}, @code{memmove},
148
@code{memset} and @code{memcmp}.
149
Finally, if @code{__builtin_trap} is used, and the target does
150
not implement the @code{trap} pattern, then GCC will emit a call
151
to @code{abort}.
152
 
153
For references to Technical Corrigenda, Rationale documents and
154
information concerning the history of C that is available online, see
155
@uref{http://gcc.gnu.org/readings.html}
156
 
157
@c FIXME: details of C++ standard.
158
 
159
@cindex Objective-C
160
@cindex Objective-C++
161
 
162
There is no formal written standard for Objective-C or Objective-C++@.  The most
163
authoritative manual is ``Object-Oriented Programming and the
164
Objective-C Language'', available at a number of web sites:
165
 
166
@itemize
167
@item
168
@uref{http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/}
169
is a recent (and periodically updated) version;
170
@item
171
@uref{http://www.toodarkpark.org/computers/objc/}
172
is an older example;
173
@item
174
@uref{http://www.gnustep.org}
175
and
176
@uref{http://gcc.gnu.org/readings.html}
177
have additional useful information.
178
@end itemize
179
 
180
@cindex treelang
181
There is no standard for treelang, which is a sample language front end
182
for GCC@.  Its only purpose is as a sample for people wishing to write a
183
new language for GCC@.  The language is documented in
184
@file{gcc/treelang/treelang.texi} which can be turned into info or
185
HTML format.
186
 
187
@xref{Top, GNAT Reference Manual, About This Guide, gnat_rm,
188
GNAT Reference Manual}, for information on standard
189
conformance and compatibility of the Ada compiler.
190
 
191
@xref{Standards,,Standards, gfortran, The GNU Fortran Compiler}, for details
192
of standards supported by GNU Fortran.
193
 
194
@xref{Compatibility,,Compatibility with the Java Platform, gcj, GNU gcj},
195
for details of compatibility between @command{gcj} and the Java Platform.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.