Skip to main content

IAR Embedded Workbench for Arm 10.10.x

C language overview

In this section:

The IAR C/C++ Compiler for Arm supports the INCITS/ISO/IEC 9899:2018 standard, also known as C18. C18 addresses defects in C11 (INCITS/ISO/IEC 9899:2012) without introducing any new language features. This means that the C11 standard is also supported. In IAR user documentation, the C18 standard is referred to as Standard C and is the default standard used in the compiler.

The compiler will accept source code written in the C18 standard or a superset thereof. Features that belong to the C23 standard, formally ISO/IEC 9899:2024, are continuously added to the compiler. See Supported C23 features for a list of currently supported C23 features.

With C enabled, the IAR C/C++ Compiler for Arm can compile all C18/C11 source code files, except for those that depend on thread-related system header files.

The floating-point standard that Standard C binds to is IEC 60559—known as ISO/IEC/IEEE 60559—which is nearly identical to the IEEE 754 format.

Annex K (Bounds-checking interfaces) of the C standard is supported. See Bounds checking functionality.

For an overview of the differences between the various versions of the C standard, see the Wikipedia articles C18 (C standard revision), C11 (C standard revision), or C99.

Supported C23 features

The compiler accepts these C features that belong to the C23 standard, formally ISO/IEC 9899:2024:

  • The Attribute syntax [[attr]]

  • The __has_c_attribute preprocessor conditional

    This can be used to test whether a particular attribute is supported or not.

  • The standard attributes [[deprecated]], [[nodiscard]], [[maybe_unused]], [[fallthrough]], and [[noreturn]]