Languages and standards

Languages and standards

The IAR C/C++ Compiler supports C,  C++ and Embedded C++. It supports a wide range of industry-standard debug and image formats, compatible with most popular debuggers and emulators, including ELF/DWARF where applicable.

The IAR C/C++ compilers offer different dialects of the C and C++ programming languages, as well as different extensions specific for embedded programming (please note that not all language standards are supported for all target implementations). The compiler can be instructed to disable extensions for strict conformance to the standards. 

A wide range of industry-standard debug and image formats compatible with most popular debuggers and emulators are supported. This includes ELF/DWARF where applicable.

ISO/ANSI C/C++ Compliance

The IAR C/C++ compilers adhere to a freestanding implementation of the following C programming language standards:

  • ANSI X3.159-1989 (known as C89)
  • ISO/IEC 9899:1990 (known as C89 or C90) including all technical corrigenda and addenda
  • ISO/IEC 9899:1999 (known as C99) including up to technical corrigendum No.3
  • ISO/IEC 14882:2003 (C++)

Embedded C++ Compliance

IAR C/C++ compilers offer these dialects of C++:

  • C++ as defined by ISO/IEC 14882:2003
  • Embedded C++ (EC++) as defined by Embedded C++ Technical Committee Draft, Version WP-AM-0003, 13 October 1999
  • Extended Embedded C++, defined by IAR Systems

About Embedded C++

Embedded C++ is a proper subset of the C++ programming language defined by the Embedded C++ Technical Committee. The fact that performance and portability are particularly important in embedded systems development was considered when defining Embedded C++, and because of this it excludes size and speed consuming C++ features that are not relevant for embedded systems.

Embedded C++ lacks the following features of C++ making the runtime library significantly more efficient:

  • Templates
  • Multiple inheritance
  • Exception handling
  • Runtime type information
  • New cast syntax (operators dynamic_cast, static_cast, reinterpret_cast, and const_cast)
  • Namespaces

Recent additions to the ISO/ANSI C++ standard are also excluded from Embedded C++. The reason is that they represent potential portability problems, due to the fact that few development tools support the standard.

About Extended Embedded C++

IAR Systems' Extended Embedded C++ is also a subset of C++, but includes some additional language features compared to Embedded C++. These features strengthen the benefits of object-oriented development without carrying an overhead in efficiency or size.

Extended Embedded C++ lacks the following C++ features:

  • RTTI
  • Exceptions

IEEE 754 standard

IAR Embedded Workbench supports the IEEE 754 standard for floating-point arithmetic.


MISRA C is a software development standard for the C programming language developed by MISRA, The Motor Industry Software Reliability Association. Its aims are to facilitate code safety, portability and reliability in the context of embedded systems, specifically those systems programmed in ISO C.

The first edition of the MISRA C standard, "Guidelines for the use of the C language in vehicle based software", was produced in 1998. In 2004, a second edition was produced with many substantial changes to the guidelines, including a complete renumbering of the rules.

IAR Embedded Workbench features a built-in MISRA C checker (2004 & 1998). With the add-on product C-STAT, you can check compliance with rules as defined by MISRA C:2004, MISRA C++:2008 and MISRA C:2012.

Test validation

We use the following commercial test suites to test conformance of our tools to the standards:

  • Plum Hall Validation test suite for ISO/IEC C conformance
  • Perennial EC++VS (Embedded C++ validation suite) for Embedded C++ conformance
  • Dinkum C++ Proofer to test how our libraries conform to the C and Embedded C++ standard as well as test our STL implementation against the C++ standard.

In addition to the commercial suites we use several in-house test suites for testing new features, regression testing, corrected errors, etc.

© IAR Systems 1995-2016 - All rights reserved.