Um Daten und Funktionen in C und C++ benutzen zu können, müssen sie gleiche oder vergleichbare Typen haben. C++ enthält die gleiche Menge an Basisdatentypen wie C. C++ ist jedoch eine echte Obermenge von C und enthält somit mehr Typen als C.
Folgende Typen können bei der Sprachverknüpfung benutzt werden:
Elementare Typen:
char
,short
,int
,long
,long long
,float
,double
,long double
,void
Qualifizierer:
unsigned
,const
,volatile
Zeiger auf gemeinsame Typen
Arrays von gemeinsamen Typen (werden als Zeiger übergeben)
Strukturen und Unions
Diese dürfen in C++ folgende Komponenten nicht enthalten: Elementfunktionen, Konstruktoren, Destruktoren, Basisklassen, Zugriffsspezifizierer. Die Struktur-/Unionkomponenten müssen gemeinsame Typen haben, d.h. sie müssen syntaktisch gleich aussehen.Einfache Aufzählungen
Funktionen mit gemeinsamen Argument- und Ergebnistypen
Die Ellipse (...) ist erlaubt.
Folgende Typen dürfen bei der Sprachverknüpfung nicht benutzt werden:
Referenztypen
Zeiger auf die Elemente von Klassen, Unions oder Strukturen
Klassen
Strukturen und Unions, die Elementfunktionen, Konstruktoren, Destruktoren, Basisklassen oder Zugriffsspezifizierer enthalten
- Aufzählungen mit expliziter Typangabe und/oder Scope:
enum E1 : int; enum struct E2;
Typen, die lokal in einer Klasse definiert sind
Elementfunktionen
Templates
std::nullptr_t
bool
_Complex
,_Imaginary
(ein C11 Feature)- Arrays mit variabler Länge (ein C11 Feature)