Die Programmiersprache C ist die Basis für C++. Einer der großen Vorteile von C++ ist die leichte Benutzbarkeit von in C geschriebenen Bibliotheken.
Allerdings weichen die Implementierungen von C und C++ bezüglich der Behandlung von externen Namen voneinander ab: Im Gegensatz zu C werden in C++ externe Namen für den Binder codiert.
Sollen Funktionen und Daten in C++ und in C (oder anderen Sprachen) gemeinsam benutzt werden, muss die Codierung der externen Namen unterdrückt werden. Das C++-Sprachmittel hierfür lautet:
extern "C"
Deklaration;
bzw.
extern "C" {
Deklarationen
}
Im C++-Programm sind extern "C"
-Deklarationen erforderlich sowohl für die in C++ definierten als auch für die in C (oder anderen Sprachen) definierten Daten und Funktionen.
Für den Aufruf der Standard-C-Bibliotheksfunktionen aus C++-Quellen sind lediglich die entsprechenden Standard-Include-Dateien (z.B. stdio.h) einzubinden. Diese enthalten die extern "C"
-Deklarationen für sämtliche C-Bibliotheksfunktionen.
Bei Sprachverknüpfungen zwischen C und C++ sollten nur C89- bzw. C11-Objekte Verwendung finden.
Verknüpfungen von C++-Objekten mit K&R-C-Objekten sind zwar technisch möglich, jedoch u.U. problematisch (es gelten unterschiedliche Restriktionen bzgl. Funktionsdeklarationen, float
-Parameter werden unterschiedlich übergeben etc.).