Specifications
CAVR-4
110
Overview
AVR® IAR C/C++ Compiler
Reference Guide
● New cast syntax (the operators dynamic_cast, static_cast,
reinterpret_cast, and const_cast)
● Namespaces
● Mutable attribute.
The exclusion of these language features makes the runtime library significantly more
efficient. The Embedded C++ library furthermore differs from the full C++ library in
that:
● The standard template library (STL) is excluded
● Streams, strings, and complex numbers are supported without the use of templates
● Library features which relate to exception handling and runtime type information
(the headers
except, stdexcept, and typeinfo) are excluded.
Note: The library is not in the
std namespace, because Embedded C++ does not
support namespaces.
IAR EXTENDED EMBEDDED C++
IAR Extended EC++ is a slightly larger subset of C++ which adds the following features
to the standard EC++:
● Full template support
● Multiple and virtual inheritance
● Namespace support
● Mutable attribute
● The cast operators static_cast, const_cast, and reinterpret_cast.
All these added features conform to the C++ standard.
To support Extended EC++, this product includes a version of the standard template
library (STL), in other words, the C++ standard chapters utilities, containers, iterators,
algorithms, and some numerics. This STL does neither use exceptions and multiple
inheritance, nor does it use runtime type information (
rtti). Moreover, the library is
not in the
std namespace.
Note: A module compiled with Extended EC++ enabled is fully link-compatible with
a module compiled without Extended EC++ enabled.
ENABLING C++ SUPPORT
In the AVR IAR C/C++ Compiler, the default language is C. To be able to compile files
written in Embedded C++, you must use the --ec++ compiler option. See --ec++, page
179. You must also use the IAR DLIB runtime library.
To take advantage of Extended Embedded C++ features in your source code, you must
use the
--eec++ compiler option. See --eec++, page 180.