The C compiler supports the 1989, 1999, and
2011 versions of the C language:
- C89. Compiling with the --c89
option causes the compiler to conform to the ISO/IEC 9899:1990 C standard, which was
previously ratified as ANSI X3.159-1989. The names "C89" and "C90" refer to the same
programming language. "C89" is used in this document.
- C99. Compiling with the --c99
option causes the compiler to conform to the ISO/IEC 9899:1999 C standard.
- C11. Compiling with the --c11 option causes the compiler to
conform to the ISO/IEC 9899:2011 C standard.
The C language is also described in the
second edition of Kernighan and Ritchie's The C Programming Language (K&R). The
compiler can also accept many of the language extensions found in the GNU C compiler (see
Section 7.14).
The compiler supports some features of C99 and C11 in the default relaxed ANSI mode with C89 support. It supports all
language features of C99 in C99 mode and all language features of C11 in C11 mode. See Section 7.13.
The atomic operations described in the C11
standard are not supported.
The ANSI/ISO standard identifies some
features of the C language that may be affected by characteristics of the target processor,
run-time environment, or host environment. This set of features can differ among standard
compilers.
Unsupported features of the
C library are:
- The run-time library has minimal support
for wide characters. The type wchar_t is implemented as
unsigned short (16 bits), but can be an int if you set the
--wchar_t=32 option. The
wide character set is equivalent to the set of values of type char. The library includes
the header files <wchar.h> and <wctype.h>, but does not include all the
functions specified in the standard. See Section 7.4 for information about extended and multibyte character sets.
- The run-time library includes the header
file <locale.h>, but with a minimal implementation. The only supported locale is the
C locale. That is, library behavior that is specified to vary by locale is hard-coded to
the behavior of the C locale, and attempting to install a different locale by way of a
call to setlocale() will return NULL.
- Some run-time functions and features in
the C99/C11 specifications are
not supported. See Section 7.13.