C++

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Umfassende Erweiterung der Programmiersprache C; kompatibel in der Hinsicht, dass C fast vollständig als Teilmenge in C++ enthalten ist. Dadurch ist C++ ebenso wie C zur hardwarenahen Programmierung geeignet.

Im Gegensatz zu C unterstützt aber C++ die Methodik der objektorientierten Programmierung. Diese Methodik ist besonders geeignet, große, komplexe Programmsysteme unter Kontrolle zu halten, bzw. einen Baukasten aus Standardfunktionalitäten zu erstellen.

Ein detaillierter Vergleich von C und C++ unter besonderer Berücksichtigung der für die Programmierung von Mikrocontrollern relevanten Aspekte findet sich unter C vs C++.

Viele Compiler für Mikrocontroller bieten C++-Unterstützung an, allerdings ohne die C++-Standard-Bibliothek. Da in dieser Bibliothek auch die Operatoren 'new' und 'delete' definiert sind, sind diese häufig nicht verfügbar, können aber meist leicht nachgerüstet werden.

Im Falle von msp430-gcc, avr-gcc und anderen GCC-Portierungen müssen nur die operatoren new, new[], delete und delete[] überladen werden. Dazu sind lediglich die folgenden zwei Schritte notwendig:

1. Folgende Datei mit-kompilieren und -linken:

// newdelete.cpp
extern "C"
{                                                                                                                                                 
  #include <stdlib.h>
}

void *operator new(size_t size)
{
  return malloc(size);
}

void *operator new[](size_t size)
{
  return malloc(size);
}

void operator delete(void* ptr)
{
  free(ptr);
}

void operator delete[](void* ptr)
{
  free(ptr);
}

2. Beim kompilieren von C++ Quellcode die folgenden Compileroptionen verwenden:

-fno-exceptions -fno-rtti

Hinweis: Nicht mit g++ sondern mit gcc kompilieren, da sonst libstdc++ gesucht und nicht gefunden wird.

Weblinks