.. _cxx_support_v2:

C++ Support for Applications
############################

The kernel supports applications written in both C and C++. However, to
use C++ in an application you must configure the kernel to include C++
support and the build system must select the correct compiler.

The build system selects the C++ compiler based on the suffix of the files.
Files identified with either a **cxx** or a **cpp** suffix are compiled using
the C++ compiler. For example, :file:`myCplusplusApp.cpp` is compiled using C++.

The kernel currently provides only a subset of C++ functionality. The
following features are *not* supported:

* Dynamic object management with the **new** and **delete** operators
* :abbr:`RTTI (runtime type information)`
* Static global object destruction

While not an exhaustive list, support for the following functionality is
included:

* Inheritance
* Virtual functions
* Virtual tables
* Static global object constructors
* Exceptions

Static global object constructors are initialized after the drivers are
initialized but before the application :c:func:`main()` function. Therefore,
use of C++ is restricted to application code.

.. note::
    Do not use C++ for kernel, driver, or system initialization code.
