This is the documentation for the latest (main) development branch of Zephyr. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.

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, 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

  • RTTI

  • 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 main() function. Therefore, use of C++ is restricted to application code.

Note

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