2.2. Characteristics of Arm CΒΆ

Please see C Language Variants for supported C language variants as well as the options that control the language standard used, including GNU language extensions.

C11 atomic operations are supported as follows:

  • On Cortex-M3, Cortex-M4, Cortex-R4, and Cortex-R5, atomic operations are implemented using processor-supported exclusive access instructions.

  • On Cortex-M0, atomic operations are not supported.

In addition, the compiler supports many of the features described in the Arm C Language Extensions for all Cortex-M and Cortex-R variants. See Arm C Language Extensions (ACLE).

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. Please see Arm C Implementation Defined Behavior.

Unsupported features of the C library are:

  • 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 hardcoded 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 Library Functions (J.3.12) for more details.