.. _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.