5.1 Characteristics of MSP430 C
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 5.17).
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 5.16.
The atomic operations in C11 are supported in the relaxed ANSI mode (on by default) and in C11 mode. An atomic operation is implemented by disabling interrupts across the operation.
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 int (16-bits). 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 5.7 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 5.16.